Linux 2.6.19-rc1
[linux-2.6/next.git] / arch / sparc / lib / ashrdi3.S
blob2848237598a4d22cde41badd1e0da126439886e2
1 /* $Id: ashrdi3.S,v 1.4 1999/11/19 04:11:49 davem Exp $
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         .text
9         .align  4
10         .globl __ashrdi3
11 __ashrdi3:
12         tst     %o2
13         be      3f
14          or     %g0, 32, %g2
16         sub     %g2, %o2, %g2
18         tst     %g2
19         bg      1f
20          sra    %o0, %o2, %o4
22         sra     %o0, 31, %o4
23         sub     %g0, %g2, %g2
24         ba      2f
25          sra    %o0, %g2, %o5
28         sll     %o0, %g2, %g3
29         srl     %o1, %o2, %g2
30         or      %g2, %g3, %o5
32         or      %g0, %o4, %o0
33         or      %g0, %o5, %o1
35         jmpl    %o7 + 8, %g0
36          nop