Skip to content

Commit bedc966

Browse files
author
Vasily Gorbik
committed
s390/nospec: move to single register thunks
Assembler generated expoline thunks were in a form __s390_indirect_jump_rXuse_rX when exrl instruction has not been available. Now with z10 as minimum supported machine generation there is no need for 2 register thunks, always generate __s390_indirect_jump_rX versions. Acked-by: Heiko Carstens <hca@linux.ibm.com> Acked-by: Sumanth Korikkar <sumanthk@linux.ibm.com> Acked-by: Ilya Leoshkevich <iii@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
1 parent 4efd417 commit bedc966

1 file changed

Lines changed: 24 additions & 32 deletions

File tree

arch/s390/include/asm/nospec-insn.h

Lines changed: 24 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -37,101 +37,93 @@
3737
.popsection
3838
.endm
3939

40-
.macro __THUNK_PROLOG_BR r1,r2
40+
.macro __THUNK_PROLOG_BR r1
4141
__THUNK_PROLOG_NAME __s390_indirect_jump_r\r1
4242
.endm
4343

44-
.macro __THUNK_EPILOG_BR r1,r2
44+
.macro __THUNK_EPILOG_BR r1
4545
__THUNK_EPILOG_NAME __s390_indirect_jump_r\r1
4646
.endm
4747

48-
.macro __THUNK_BR r1,r2
48+
.macro __THUNK_BR r1
4949
jg __s390_indirect_jump_r\r1
5050
.endm
5151

52-
.macro __THUNK_BRASL r1,r2,r3
52+
.macro __THUNK_BRASL r1,r2
5353
brasl \r1,__s390_indirect_jump_r\r2
5454
.endm
5555

56-
.macro __DECODE_RR expand,reg,ruse
56+
.macro __DECODE_R expand,reg
5757
.set __decode_fail,1
5858
.irp r1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
5959
.ifc \reg,%r\r1
60-
.irp r2,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
61-
.ifc \ruse,%r\r2
62-
\expand \r1,\r2
60+
\expand \r1
6361
.set __decode_fail,0
6462
.endif
6563
.endr
66-
.endif
67-
.endr
6864
.if __decode_fail == 1
69-
.error "__DECODE_RR failed"
65+
.error "__DECODE_R failed"
7066
.endif
7167
.endm
7268

73-
.macro __DECODE_RRR expand,rsave,rtarget,ruse
69+
.macro __DECODE_RR expand,rsave,rtarget
7470
.set __decode_fail,1
7571
.irp r1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
7672
.ifc \rsave,%r\r1
7773
.irp r2,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
7874
.ifc \rtarget,%r\r2
79-
.irp r3,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
80-
.ifc \ruse,%r\r3
81-
\expand \r1,\r2,\r3
75+
\expand \r1,\r2
8276
.set __decode_fail,0
8377
.endif
8478
.endr
8579
.endif
8680
.endr
87-
.endif
88-
.endr
8981
.if __decode_fail == 1
90-
.error "__DECODE_RRR failed"
82+
.error "__DECODE_RR failed"
9183
.endif
9284
.endm
9385

94-
.macro __THUNK_EX_BR reg,ruse
86+
.macro __THUNK_EX_BR reg
9587
exrl 0,555f
9688
j .
9789
555: br \reg
9890
.endm
9991

10092
#ifdef CONFIG_EXPOLINE_EXTERN
101-
.macro GEN_BR_THUNK reg,ruse=%r1
93+
.macro GEN_BR_THUNK reg
10294
.endm
103-
.macro GEN_BR_THUNK_EXTERN reg,ruse=%r1
95+
.macro GEN_BR_THUNK_EXTERN reg
10496
#else
105-
.macro GEN_BR_THUNK reg,ruse=%r1
97+
.macro GEN_BR_THUNK reg
10698
#endif
107-
__DECODE_RR __THUNK_PROLOG_BR,\reg,\ruse
108-
__THUNK_EX_BR \reg,\ruse
109-
__DECODE_RR __THUNK_EPILOG_BR,\reg,\ruse
99+
__DECODE_R __THUNK_PROLOG_BR,\reg
100+
__THUNK_EX_BR \reg
101+
__DECODE_R __THUNK_EPILOG_BR,\reg
110102
.endm
111103

112-
.macro BR_EX reg,ruse=%r1
113-
557: __DECODE_RR __THUNK_BR,\reg,\ruse
104+
.macro BR_EX reg
105+
557: __DECODE_R __THUNK_BR,\reg
114106
.pushsection .s390_indirect_branches,"a",@progbits
115107
.long 557b-.
116108
.popsection
117109
.endm
118110

119-
.macro BASR_EX rsave,rtarget,ruse=%r1
120-
559: __DECODE_RRR __THUNK_BRASL,\rsave,\rtarget,\ruse
111+
.macro BASR_EX rsave,rtarget
112+
559: __DECODE_RR __THUNK_BRASL,\rsave,\rtarget
121113
.pushsection .s390_indirect_branches,"a",@progbits
122114
.long 559b-.
123115
.popsection
124116
.endm
125117

126118
#else
127-
.macro GEN_BR_THUNK reg,ruse=%r1
119+
.macro GEN_BR_THUNK reg
128120
.endm
129121

130-
.macro BR_EX reg,ruse=%r1
122+
.macro BR_EX reg
131123
br \reg
132124
.endm
133125

134-
.macro BASR_EX rsave,rtarget,ruse=%r1
126+
.macro BASR_EX rsave,rtarget
135127
basr \rsave,\rtarget
136128
.endm
137129
#endif /* CC_USING_EXPOLINE */

0 commit comments

Comments
 (0)