Linux 4.13.16
[linux/fpc-iii.git] / arch / sparc / lib / ashrdi3.S
blob4310256e796475b5e9ad3e1fb81b0839a521b027
1 /*
2  * ashrdi3.S:   The filesystem code creates all kinds of references to
3  *              this little routine on the sparc with gcc.
4  *
5  * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
6  */
8 #include <linux/linkage.h>
9 #include <asm/export.h>
11         .text
12 ENTRY(__ashrdi3)
13         tst     %o2
14         be      3f
15          or     %g0, 32, %g2
17         sub     %g2, %o2, %g2
19         tst     %g2
20         bg      1f
21          sra    %o0, %o2, %o4
23         sra     %o0, 31, %o4
24         sub     %g0, %g2, %g2
25         ba      2f
26          sra    %o0, %g2, %o5
29         sll     %o0, %g2, %g3
30         srl     %o1, %o2, %g2
31         or      %g2, %g3, %o5
33         or      %g0, %o4, %o0
34         or      %g0, %o5, %o1
36         jmpl    %o7 + 8, %g0
37          nop
38 ENDPROC(__ashrdi3)
39 EXPORT_SYMBOL(__ashrdi3)