1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | |
3 | #include <linux/export.h> |
4 | #include <linux/linkage.h> |
5 | #include <asm/nospec-insn.h> |
6 | |
7 | .section .noinstr.text, "ax" |
8 | |
9 | GEN_BR_THUNK %r14 |
10 | |
11 | SYM_FUNC_START(__ashlti3) |
12 | lmg %r0,%r1,0(%r3) |
13 | cije %r4,0,1f |
14 | lhi %r3,64 |
15 | sr %r3,%r4 |
16 | jnh 0f |
17 | srlg %r3,%r1,0(%r3) |
18 | sllg %r0,%r0,0(%r4) |
19 | sllg %r1,%r1,0(%r4) |
20 | ogr %r0,%r3 |
21 | j 1f |
22 | 0: sllg %r0,%r1,-64(%r4) |
23 | lghi %r1,0 |
24 | 1: stmg %r0,%r1,0(%r2) |
25 | BR_EX %r14 |
26 | SYM_FUNC_END(__ashlti3) |
27 | EXPORT_SYMBOL(__ashlti3) |
28 | |
29 | SYM_FUNC_START(__ashrti3) |
30 | lmg %r0,%r1,0(%r3) |
31 | cije %r4,0,1f |
32 | lhi %r3,64 |
33 | sr %r3,%r4 |
34 | jnh 0f |
35 | sllg %r3,%r0,0(%r3) |
36 | srlg %r1,%r1,0(%r4) |
37 | srag %r0,%r0,0(%r4) |
38 | ogr %r1,%r3 |
39 | j 1f |
40 | 0: srag %r1,%r0,-64(%r4) |
41 | srag %r0,%r0,63 |
42 | 1: stmg %r0,%r1,0(%r2) |
43 | BR_EX %r14 |
44 | SYM_FUNC_END(__ashrti3) |
45 | EXPORT_SYMBOL(__ashrti3) |
46 | |
47 | SYM_FUNC_START(__lshrti3) |
48 | lmg %r0,%r1,0(%r3) |
49 | cije %r4,0,1f |
50 | lhi %r3,64 |
51 | sr %r3,%r4 |
52 | jnh 0f |
53 | sllg %r3,%r0,0(%r3) |
54 | srlg %r1,%r1,0(%r4) |
55 | srlg %r0,%r0,0(%r4) |
56 | ogr %r1,%r3 |
57 | j 1f |
58 | 0: srlg %r1,%r0,-64(%r4) |
59 | lghi %r0,0 |
60 | 1: stmg %r0,%r1,0(%r2) |
61 | BR_EX %r14 |
62 | SYM_FUNC_END(__lshrti3) |
63 | EXPORT_SYMBOL(__lshrti3) |
64 | |