Merge branch 'master' of /home/src/linux-2.6/
[linux-2.6] / arch / sparc / math-emu / ashldi3.S
1 /* $Id: ashldi3.S,v 1.1 1998/04/06 16:09:28 jj Exp $
2  * ashldi3.S:   Math-emu code creates all kinds of references to
3  *              this little routine on the sparc with gcc.
4  *
5  * Copyright (C) 1998 Jakub Jelinek(jj@ultra.linux.cz)
6  */
7
8 #include <asm/cprefix.h>
9
10         .globl C_LABEL(__ashldi3)
11 C_LABEL(__ashldi3):
12         tst     %o2
13         be      3f
14          mov    32, %g2
15
16         sub     %g2, %o2, %g2
17
18         tst     %g2
19         bg      1f
20          srl    %o1, %g2, %g3
21
22         clr     %o5
23         neg     %g2
24         ba      2f
25          sll    %o1, %g2, %o4
26
27 1:
28         sll     %o1, %o2, %o5
29         srl     %o0, %o2, %g2
30         or      %g2, %g3, %o4
31 2:
32         mov     %o4, %o0
33         mov     %o5, %o1
34 3:
35         jmpl    %o7 + 8, %g0
36          nop