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