1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | /* |
3 | * ashrdi3.S: The filesystem code creates all kinds of references to |
4 | * this little routine on the sparc with gcc. |
5 | * |
6 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
7 | */ |
8 | |
9 | #include <linux/export.h> |
10 | #include <linux/linkage.h> |
11 | |
12 | .text |
13 | ENTRY(__ashrdi3) |
14 | tst %o2 |
15 | be 3f |
16 | or %g0, 32, %g2 |
17 | |
18 | sub %g2, %o2, %g2 |
19 | |
20 | tst %g2 |
21 | bg 1f |
22 | sra %o0, %o2, %o4 |
23 | |
24 | sra %o0, 31, %o4 |
25 | sub %g0, %g2, %g2 |
26 | ba 2f |
27 | sra %o0, %g2, %o5 |
28 | |
29 | 1: |
30 | sll %o0, %g2, %g3 |
31 | srl %o1, %o2, %g2 |
32 | or %g2, %g3, %o5 |
33 | 2: |
34 | or %g0, %o4, %o0 |
35 | or %g0, %o5, %o1 |
36 | 3: |
37 | jmpl %o7 + 8, %g0 |
38 | nop |
39 | ENDPROC(__ashrdi3) |
40 | EXPORT_SYMBOL(__ashrdi3) |
41 | |