1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | /* |
3 | * ashldi3.S: GCC emits these for certain drivers playing |
4 | * with long longs. |
5 | * |
6 | * Copyright (C) 1999 David S. Miller (davem@redhat.com) |
7 | */ |
8 | |
9 | #include <linux/export.h> |
10 | #include <linux/linkage.h> |
11 | |
12 | .text |
13 | ENTRY(__ashldi3) |
14 | cmp %o2, 0 |
15 | be 9f |
16 | mov 0x20, %g2 |
17 | |
18 | sub %g2, %o2, %g2 |
19 | cmp %g2, 0 |
20 | bg 7f |
21 | sll %o0, %o2, %g3 |
22 | |
23 | neg %g2 |
24 | clr %o5 |
25 | b 8f |
26 | sll %o1, %g2, %o4 |
27 | 7: |
28 | srl %o1, %g2, %g2 |
29 | sll %o1, %o2, %o5 |
30 | or %g3, %g2, %o4 |
31 | 8: |
32 | mov %o4, %o0 |
33 | mov %o5, %o1 |
34 | 9: |
35 | retl |
36 | nop |
37 | ENDPROC(__ashldi3) |
38 | EXPORT_SYMBOL(__ashldi3) |
39 | |