162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci#include <linux/export.h> 462306a36Sopenharmony_ci#include <linux/linkage.h> 562306a36Sopenharmony_ci#include <asm/nospec-insn.h> 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci .section .noinstr.text, "ax" 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci GEN_BR_THUNK %r14 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ciSYM_FUNC_START(__ashlti3) 1262306a36Sopenharmony_ci lmg %r0,%r1,0(%r3) 1362306a36Sopenharmony_ci cije %r4,0,1f 1462306a36Sopenharmony_ci lhi %r3,64 1562306a36Sopenharmony_ci sr %r3,%r4 1662306a36Sopenharmony_ci jnh 0f 1762306a36Sopenharmony_ci srlg %r3,%r1,0(%r3) 1862306a36Sopenharmony_ci sllg %r0,%r0,0(%r4) 1962306a36Sopenharmony_ci sllg %r1,%r1,0(%r4) 2062306a36Sopenharmony_ci ogr %r0,%r3 2162306a36Sopenharmony_ci j 1f 2262306a36Sopenharmony_ci0: sllg %r0,%r1,-64(%r4) 2362306a36Sopenharmony_ci lghi %r1,0 2462306a36Sopenharmony_ci1: stmg %r0,%r1,0(%r2) 2562306a36Sopenharmony_ci BR_EX %r14 2662306a36Sopenharmony_ciSYM_FUNC_END(__ashlti3) 2762306a36Sopenharmony_ciEXPORT_SYMBOL(__ashlti3) 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ciSYM_FUNC_START(__ashrti3) 3062306a36Sopenharmony_ci lmg %r0,%r1,0(%r3) 3162306a36Sopenharmony_ci cije %r4,0,1f 3262306a36Sopenharmony_ci lhi %r3,64 3362306a36Sopenharmony_ci sr %r3,%r4 3462306a36Sopenharmony_ci jnh 0f 3562306a36Sopenharmony_ci sllg %r3,%r0,0(%r3) 3662306a36Sopenharmony_ci srlg %r1,%r1,0(%r4) 3762306a36Sopenharmony_ci srag %r0,%r0,0(%r4) 3862306a36Sopenharmony_ci ogr %r1,%r3 3962306a36Sopenharmony_ci j 1f 4062306a36Sopenharmony_ci0: srag %r1,%r0,-64(%r4) 4162306a36Sopenharmony_ci srag %r0,%r0,63 4262306a36Sopenharmony_ci1: stmg %r0,%r1,0(%r2) 4362306a36Sopenharmony_ci BR_EX %r14 4462306a36Sopenharmony_ciSYM_FUNC_END(__ashrti3) 4562306a36Sopenharmony_ciEXPORT_SYMBOL(__ashrti3) 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ciSYM_FUNC_START(__lshrti3) 4862306a36Sopenharmony_ci lmg %r0,%r1,0(%r3) 4962306a36Sopenharmony_ci cije %r4,0,1f 5062306a36Sopenharmony_ci lhi %r3,64 5162306a36Sopenharmony_ci sr %r3,%r4 5262306a36Sopenharmony_ci jnh 0f 5362306a36Sopenharmony_ci sllg %r3,%r0,0(%r3) 5462306a36Sopenharmony_ci srlg %r1,%r1,0(%r4) 5562306a36Sopenharmony_ci srlg %r0,%r0,0(%r4) 5662306a36Sopenharmony_ci ogr %r1,%r3 5762306a36Sopenharmony_ci j 1f 5862306a36Sopenharmony_ci0: srlg %r1,%r0,-64(%r4) 5962306a36Sopenharmony_ci lghi %r0,0 6062306a36Sopenharmony_ci1: stmg %r0,%r1,0(%r2) 6162306a36Sopenharmony_ci BR_EX %r14 6262306a36Sopenharmony_ciSYM_FUNC_END(__lshrti3) 6362306a36Sopenharmony_ciEXPORT_SYMBOL(__lshrti3) 64