Commit bd2c55b3 authored by Sven Schnelle's avatar Sven Schnelle Committed by Vasily Gorbik

s390/entry: Make int handlers ready for lowcore relocation

In preparation of having lowcore at different address than zero,
add the base register to all lowcore accesses in the ext/io interrupt
handlers.
Reviewed-by: default avatarHeiko Carstens <hca@linux.ibm.com>
Signed-off-by: default avatarSven Schnelle <svens@linux.ibm.com>
Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
parent 9e1e275f
...@@ -395,26 +395,27 @@ SYM_CODE_END(pgm_check_handler) ...@@ -395,26 +395,27 @@ SYM_CODE_END(pgm_check_handler)
*/ */
.macro INT_HANDLER name,lc_old_psw,handler .macro INT_HANDLER name,lc_old_psw,handler
SYM_CODE_START(\name) SYM_CODE_START(\name)
stckf __LC_INT_CLOCK STMG_LC %r8,%r15,__LC_SAVE_AREA_ASYNC
stpt __LC_SYS_ENTER_TIMER GET_LC %r13
STBEAR __LC_LAST_BREAK stckf __LC_INT_CLOCK(%r13)
stpt __LC_SYS_ENTER_TIMER(%r13)
STBEAR __LC_LAST_BREAK(%r13)
BPOFF BPOFF
stmg %r8,%r15,__LC_SAVE_AREA_ASYNC lmg %r8,%r9,\lc_old_psw(%r13)
lmg %r8,%r9,\lc_old_psw
tmhh %r8,0x0001 # interrupting from user ? tmhh %r8,0x0001 # interrupting from user ?
jnz 1f jnz 1f
#if IS_ENABLED(CONFIG_KVM) #if IS_ENABLED(CONFIG_KVM)
lg %r10,__LC_CURRENT lg %r10,__LC_CURRENT(%r13)
tm __TI_sie(%r10),0xff tm __TI_sie(%r10),0xff
jz 0f jz 0f
BPENTER __SF_SIE_FLAGS(%r15),_TIF_ISOLATE_BP_GUEST BPENTER __SF_SIE_FLAGS(%r15),_TIF_ISOLATE_BP_GUEST
SIEEXIT __SF_SIE_CONTROL(%r15),%r0 SIEEXIT __SF_SIE_CONTROL(%r15),%r13
#endif #endif
0: CHECK_STACK __LC_SAVE_AREA_ASYNC,%r0 0: CHECK_STACK __LC_SAVE_AREA_ASYNC,%r13
aghi %r15,-(STACK_FRAME_OVERHEAD + __PT_SIZE) aghi %r15,-(STACK_FRAME_OVERHEAD + __PT_SIZE)
j 2f j 2f
1: lctlg %c1,%c1,__LC_KERNEL_ASCE 1: lctlg %c1,%c1,__LC_KERNEL_ASCE(%r13)
lg %r15,__LC_KERNEL_STACK lg %r15,__LC_KERNEL_STACK(%r13)
2: xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15) 2: xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15)
la %r11,STACK_FRAME_OVERHEAD(%r15) la %r11,STACK_FRAME_OVERHEAD(%r15)
stmg %r0,%r7,__PT_R0(%r11) stmg %r0,%r7,__PT_R0(%r11)
...@@ -428,18 +429,18 @@ SYM_CODE_START(\name) ...@@ -428,18 +429,18 @@ SYM_CODE_START(\name)
xgr %r7,%r7 xgr %r7,%r7
xgr %r10,%r10 xgr %r10,%r10
xc __PT_FLAGS(8,%r11),__PT_FLAGS(%r11) xc __PT_FLAGS(8,%r11),__PT_FLAGS(%r11)
mvc __PT_R8(64,%r11),__LC_SAVE_AREA_ASYNC mvc __PT_R8(64,%r11),__LC_SAVE_AREA_ASYNC(%r13)
MBEAR %r11,%r0 MBEAR %r11,%r13
stmg %r8,%r9,__PT_PSW(%r11) stmg %r8,%r9,__PT_PSW(%r11)
lgr %r2,%r11 # pass pointer to pt_regs lgr %r2,%r11 # pass pointer to pt_regs
brasl %r14,\handler brasl %r14,\handler
mvc __LC_RETURN_PSW(16),__PT_PSW(%r11) mvc __LC_RETURN_PSW(16,%r13),__PT_PSW(%r11)
tmhh %r8,0x0001 # returning to user ? tmhh %r8,0x0001 # returning to user ?
jno 2f jno 2f
STACKLEAK_ERASE STACKLEAK_ERASE
lctlg %c1,%c1,__LC_USER_ASCE lctlg %c1,%c1,__LC_USER_ASCE(%r13)
BPON BPON
stpt __LC_EXIT_TIMER stpt __LC_EXIT_TIMER(%r13)
2: LBEAR __PT_LAST_BREAK(%r11) 2: LBEAR __PT_LAST_BREAK(%r11)
lmg %r0,%r15,__PT_R0(%r11) lmg %r0,%r15,__PT_R0(%r11)
LPSWEY __LC_RETURN_PSW,__LC_RETURN_LPSWE LPSWEY __LC_RETURN_PSW,__LC_RETURN_LPSWE
......
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