Commit fad442d3 authored by Heiko Carstens's avatar Heiko Carstens

s390/alternatives: provide identical sized orginal/alternative sequences

Explicitly provide identical sized original/alternative instruction
sequences. This way there is no need for the s390 specific alternatives
infrastructure to generate padding sequences.
The code which generates such sequences will be removed with a follow on
patch.
Acked-by: default avatarVasily Gorbik <gor@linux.ibm.com>
Tested-by: default avatarNathan Chancellor <nathan@kernel.org>
Tested-by: default avatarNick Desaulniers <ndesaulniers@google.com>
Link: https://lore.kernel.org/r/20220511120532.2228616-2-hca@linux.ibm.comSigned-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
parent c9311de7
...@@ -79,7 +79,7 @@ static inline void arch_spin_unlock(arch_spinlock_t *lp) ...@@ -79,7 +79,7 @@ static inline void arch_spin_unlock(arch_spinlock_t *lp)
typecheck(int, lp->lock); typecheck(int, lp->lock);
kcsan_release(); kcsan_release();
asm_inline volatile( asm_inline volatile(
ALTERNATIVE("", ".insn rre,0xb2fa0000,7,0", 49) /* NIAI 7 */ ALTERNATIVE("nop", ".insn rre,0xb2fa0000,7,0", 49) /* NIAI 7 */
" sth %1,%0\n" " sth %1,%0\n"
: "=R" (((unsigned short *) &lp->lock)[1]) : "=R" (((unsigned short *) &lp->lock)[1])
: "d" (0) : "cc", "memory"); : "d" (0) : "cc", "memory");
......
...@@ -53,19 +53,19 @@ STACK_INIT = STACK_SIZE - STACK_FRAME_OVERHEAD - __PT_SIZE ...@@ -53,19 +53,19 @@ STACK_INIT = STACK_SIZE - STACK_FRAME_OVERHEAD - __PT_SIZE
_LPP_OFFSET = __LC_LPP _LPP_OFFSET = __LC_LPP
.macro STBEAR address .macro STBEAR address
ALTERNATIVE "", ".insn s,0xb2010000,\address", 193 ALTERNATIVE "nop", ".insn s,0xb2010000,\address", 193
.endm .endm
.macro LBEAR address .macro LBEAR address
ALTERNATIVE "", ".insn s,0xb2000000,\address", 193 ALTERNATIVE "nop", ".insn s,0xb2000000,\address", 193
.endm .endm
.macro LPSWEY address,lpswe .macro LPSWEY address,lpswe
ALTERNATIVE "b \lpswe", ".insn siy,0xeb0000000071,\address,0", 193 ALTERNATIVE "b \lpswe; nopr", ".insn siy,0xeb0000000071,\address,0", 193
.endm .endm
.macro MBEAR reg .macro MBEAR reg
ALTERNATIVE "", __stringify(mvc __PT_LAST_BREAK(8,\reg),__LC_LAST_BREAK), 193 ALTERNATIVE "brcl 0,0", __stringify(mvc __PT_LAST_BREAK(8,\reg),__LC_LAST_BREAK), 193
.endm .endm
.macro CHECK_STACK savearea .macro CHECK_STACK savearea
...@@ -121,16 +121,16 @@ _LPP_OFFSET = __LC_LPP ...@@ -121,16 +121,16 @@ _LPP_OFFSET = __LC_LPP
.endm .endm
.macro BPOFF .macro BPOFF
ALTERNATIVE "", ".insn rrf,0xb2e80000,0,0,12,0", 82 ALTERNATIVE "nop", ".insn rrf,0xb2e80000,0,0,12,0", 82
.endm .endm
.macro BPON .macro BPON
ALTERNATIVE "", ".insn rrf,0xb2e80000,0,0,13,0", 82 ALTERNATIVE "nop", ".insn rrf,0xb2e80000,0,0,13,0", 82
.endm .endm
.macro BPENTER tif_ptr,tif_mask .macro BPENTER tif_ptr,tif_mask
ALTERNATIVE "TSTMSK \tif_ptr,\tif_mask; jz .+8; .insn rrf,0xb2e80000,0,0,13,0", \ ALTERNATIVE "TSTMSK \tif_ptr,\tif_mask; jz .+8; .insn rrf,0xb2e80000,0,0,13,0", \
"", 82 "j .+12; nop; nop", 82
.endm .endm
.macro BPEXIT tif_ptr,tif_mask .macro BPEXIT tif_ptr,tif_mask
...@@ -226,7 +226,7 @@ ENTRY(__switch_to) ...@@ -226,7 +226,7 @@ ENTRY(__switch_to)
aghi %r3,__TASK_pid aghi %r3,__TASK_pid
mvc __LC_CURRENT_PID(4,%r0),0(%r3) # store pid of next mvc __LC_CURRENT_PID(4,%r0),0(%r3) # store pid of next
lmg %r6,%r15,__SF_GPRS(%r15) # load gprs of next task lmg %r6,%r15,__SF_GPRS(%r15) # load gprs of next task
ALTERNATIVE "", "lpp _LPP_OFFSET", 40 ALTERNATIVE "nop", "lpp _LPP_OFFSET", 40
BR_EX %r14 BR_EX %r14
ENDPROC(__switch_to) ENDPROC(__switch_to)
...@@ -610,7 +610,7 @@ ENTRY(mcck_int_handler) ...@@ -610,7 +610,7 @@ ENTRY(mcck_int_handler)
jno 0f jno 0f
BPEXIT __TI_flags(%r12),_TIF_ISOLATE_BP BPEXIT __TI_flags(%r12),_TIF_ISOLATE_BP
stpt __LC_EXIT_TIMER stpt __LC_EXIT_TIMER
0: ALTERNATIVE "", __stringify(lghi %r12,__LC_LAST_BREAK_SAVE_AREA),193 0: ALTERNATIVE "nop", __stringify(lghi %r12,__LC_LAST_BREAK_SAVE_AREA),193
LBEAR 0(%r12) LBEAR 0(%r12)
lmg %r11,%r15,__PT_R11(%r11) lmg %r11,%r15,__PT_R11(%r11)
LPSWEY __LC_RETURN_MCCK_PSW,__LC_RETURN_MCCK_LPSWE LPSWEY __LC_RETURN_MCCK_PSW,__LC_RETURN_MCCK_LPSWE
...@@ -646,7 +646,7 @@ ENTRY(mcck_int_handler) ...@@ -646,7 +646,7 @@ ENTRY(mcck_int_handler)
ENDPROC(mcck_int_handler) ENDPROC(mcck_int_handler)
ENTRY(restart_int_handler) ENTRY(restart_int_handler)
ALTERNATIVE "", "lpp _LPP_OFFSET", 40 ALTERNATIVE "nop", "lpp _LPP_OFFSET", 40
stg %r15,__LC_SAVE_AREA_RESTART stg %r15,__LC_SAVE_AREA_RESTART
TSTMSK __LC_RESTART_FLAGS,RESTART_FLAG_CTLREGS,4 TSTMSK __LC_RESTART_FLAGS,RESTART_FLAG_CTLREGS,4
jz 0f jz 0f
......
...@@ -75,7 +75,7 @@ static inline int arch_load_niai4(int *lock) ...@@ -75,7 +75,7 @@ static inline int arch_load_niai4(int *lock)
int owner; int owner;
asm_inline volatile( asm_inline volatile(
ALTERNATIVE("", ".insn rre,0xb2fa0000,4,0", 49) /* NIAI 4 */ ALTERNATIVE("nop", ".insn rre,0xb2fa0000,4,0", 49) /* NIAI 4 */
" l %0,%1\n" " l %0,%1\n"
: "=d" (owner) : "Q" (*lock) : "memory"); : "=d" (owner) : "Q" (*lock) : "memory");
return owner; return owner;
...@@ -86,7 +86,7 @@ static inline int arch_cmpxchg_niai8(int *lock, int old, int new) ...@@ -86,7 +86,7 @@ static inline int arch_cmpxchg_niai8(int *lock, int old, int new)
int expected = old; int expected = old;
asm_inline volatile( asm_inline volatile(
ALTERNATIVE("", ".insn rre,0xb2fa0000,8,0", 49) /* NIAI 8 */ ALTERNATIVE("nop", ".insn rre,0xb2fa0000,8,0", 49) /* NIAI 8 */
" cs %0,%3,%1\n" " cs %0,%3,%1\n"
: "=d" (old), "=Q" (*lock) : "=d" (old), "=Q" (*lock)
: "0" (old), "d" (new), "Q" (*lock) : "0" (old), "d" (new), "Q" (*lock)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment