summaryrefslogtreecommitdiff
path: root/arch/s390/include/asm/nospec-insn.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390/include/asm/nospec-insn.h')
-rw-r--r--arch/s390/include/asm/nospec-insn.h16
1 files changed, 14 insertions, 2 deletions
diff --git a/arch/s390/include/asm/nospec-insn.h b/arch/s390/include/asm/nospec-insn.h
index bbb5c4d84db9..c670c1dd1293 100644
--- a/arch/s390/include/asm/nospec-insn.h
+++ b/arch/s390/include/asm/nospec-insn.h
@@ -20,6 +20,7 @@ _LC_BR_R1 = __LC_BR_R1
.macro __THUNK_PROLOG_NAME name
#ifdef CONFIG_EXPOLINE_EXTERN
.pushsection .text,"ax",@progbits
+ .align 16,0x07
#else
.pushsection .text.\name,"axG",@progbits,\name,comdat
#endif
@@ -30,8 +31,11 @@ _LC_BR_R1 = __LC_BR_R1
CFI_STARTPROC
.endm
- .macro __THUNK_EPILOG
+ .macro __THUNK_EPILOG_NAME name
CFI_ENDPROC
+#ifdef CONFIG_EXPOLINE_EXTERN
+ .size \name, .-\name
+#endif
.popsection
.endm
@@ -40,6 +44,10 @@ _LC_BR_R1 = __LC_BR_R1
__THUNK_PROLOG_NAME __s390_indirect_jump_r\r1
.endm
+ .macro __THUNK_EPILOG_BR r1,r2
+ __THUNK_EPILOG_NAME __s390_indirect_jump_r\r1
+ .endm
+
.macro __THUNK_BR r1,r2
jg __s390_indirect_jump_r\r1
.endm
@@ -52,6 +60,10 @@ _LC_BR_R1 = __LC_BR_R1
__THUNK_PROLOG_NAME __s390_indirect_jump_r\r2\()use_r\r1
.endm
+ .macro __THUNK_EPILOG_BR r1,r2
+ __THUNK_EPILOG_NAME __s390_indirect_jump_r\r2\()use_r\r1
+ .endm
+
.macro __THUNK_BR r1,r2
jg __s390_indirect_jump_r\r2\()use_r\r1
.endm
@@ -128,7 +140,7 @@ _LC_BR_R1 = __LC_BR_R1
#endif
__DECODE_RR __THUNK_PROLOG_BR,\reg,\ruse
__THUNK_EX_BR \reg,\ruse
- __THUNK_EPILOG
+ __DECODE_RR __THUNK_EPILOG_BR,\reg,\ruse
.endm
.macro BR_EX reg,ruse=%r1