| /* SPDX-License-Identifier: GPL-2.0 */ | |
| #include <linux/export.h> | |
| #include <linux/linkage.h> | |
| #include <asm/nospec-insn.h> | |
| .section .noinstr.text, "ax" | |
| GEN_BR_THUNK %r14 | |
| SYM_FUNC_START(__ashlti3) | |
| lmg %r0,%r1,0(%r3) | |
| cije %r4,0,1f | |
| lhi %r3,64 | |
| sr %r3,%r4 | |
| jnh 0f | |
| srlg %r3,%r1,0(%r3) | |
| sllg %r0,%r0,0(%r4) | |
| sllg %r1,%r1,0(%r4) | |
| ogr %r0,%r3 | |
| j 1f | |
| 0: sllg %r0,%r1,-64(%r4) | |
| lghi %r1,0 | |
| 1: stmg %r0,%r1,0(%r2) | |
| BR_EX %r14 | |
| SYM_FUNC_END(__ashlti3) | |
| EXPORT_SYMBOL(__ashlti3) | |
| SYM_FUNC_START(__ashrti3) | |
| lmg %r0,%r1,0(%r3) | |
| cije %r4,0,1f | |
| lhi %r3,64 | |
| sr %r3,%r4 | |
| jnh 0f | |
| sllg %r3,%r0,0(%r3) | |
| srlg %r1,%r1,0(%r4) | |
| srag %r0,%r0,0(%r4) | |
| ogr %r1,%r3 | |
| j 1f | |
| 0: srag %r1,%r0,-64(%r4) | |
| srag %r0,%r0,63 | |
| 1: stmg %r0,%r1,0(%r2) | |
| BR_EX %r14 | |
| SYM_FUNC_END(__ashrti3) | |
| EXPORT_SYMBOL(__ashrti3) | |
| SYM_FUNC_START(__lshrti3) | |
| lmg %r0,%r1,0(%r3) | |
| cije %r4,0,1f | |
| lhi %r3,64 | |
| sr %r3,%r4 | |
| jnh 0f | |
| sllg %r3,%r0,0(%r3) | |
| srlg %r1,%r1,0(%r4) | |
| srlg %r0,%r0,0(%r4) | |
| ogr %r1,%r3 | |
| j 1f | |
| 0: srlg %r1,%r0,-64(%r4) | |
| lghi %r0,0 | |
| 1: stmg %r0,%r1,0(%r2) | |
| BR_EX %r14 | |
| SYM_FUNC_END(__lshrti3) | |
| EXPORT_SYMBOL(__lshrti3) |