@@ -455,33 +455,34 @@ INT_HANDLER io_int_handler,__LC_IO_OLD_PSW,do_io_irq
455455 */
456456SYM_CODE_START(mcck_int_handler)
457457 BPOFF
458- lmg %r8 ,%r9 ,__LC_MCK_OLD_PSW
459- TSTMSK __LC_MCCK_CODE,MCCK_CODE_SYSTEM_DAMAGE
458+ GET_LC %r13
459+ lmg %r8 ,%r9 ,__LC_MCK_OLD_PSW(%r13 )
460+ TSTMSK __LC_MCCK_CODE(%r13 ),MCCK_CODE_SYSTEM_DAMAGE
460461 jo .Lmcck_panic # yes -> rest of mcck code invalid
461- TSTMSK __LC_MCCK_CODE,MCCK_CODE_CR_VALID
462+ TSTMSK __LC_MCCK_CODE( %r13 ) ,MCCK_CODE_CR_VALID
462463 jno .Lmcck_panic # control registers invalid -> panic
463464 ptlb
464- lghi %r14 ,__LC_CPU_TIMER_SAVE_AREA
465- mvc __LC_MCCK_ENTER_TIMER(8 ),0 (%r14 )
466- TSTMSK __LC_MCCK_CODE,MCCK_CODE_CPU_TIMER_VALID
465+ lay %r14 ,__LC_CPU_TIMER_SAVE_AREA( %r13 )
466+ mvc __LC_MCCK_ENTER_TIMER(8 , %r13 ),0 (%r14 )
467+ TSTMSK __LC_MCCK_CODE( %r13 ) ,MCCK_CODE_CPU_TIMER_VALID
467468 jo 3f
468- la %r14 ,__LC_SYS_ENTER_TIMER
469- clc 0 (8 ,%r14 ),__LC_EXIT_TIMER
469+ la %r14 ,__LC_SYS_ENTER_TIMER( %r13 )
470+ clc 0 (8 ,%r14 ),__LC_EXIT_TIMER( %r13 )
470471 jl 1f
471- la %r14 ,__LC_EXIT_TIMER
472- 1: clc 0 (8 ,%r14 ),__LC_LAST_UPDATE_TIMER
472+ la %r14 ,__LC_EXIT_TIMER( %r13 )
473+ 1: clc 0 (8 ,%r14 ),__LC_LAST_UPDATE_TIMER( %r13 )
473474 jl 2f
474- la %r14 ,__LC_LAST_UPDATE_TIMER
475+ la %r14 ,__LC_LAST_UPDATE_TIMER( %r13 )
4754762: spt 0 (%r14 )
476- mvc __LC_MCCK_ENTER_TIMER(8 ),0 (%r14 )
477- 3: TSTMSK __LC_MCCK_CODE,MCCK_CODE_PSW_MWP_VALID
477+ mvc __LC_MCCK_ENTER_TIMER(8 , %r13 ),0 (%r14 )
478+ 3: TSTMSK __LC_MCCK_CODE( %r13 ) ,MCCK_CODE_PSW_MWP_VALID
478479 jno .Lmcck_panic
479480 tmhh %r8 ,0x0001 # interrupting from user ?
480481 jnz .Lmcck_user
481- TSTMSK __LC_MCCK_CODE,MCCK_CODE_PSW_IA_VALID
482+ TSTMSK __LC_MCCK_CODE( %r13 ) ,MCCK_CODE_PSW_IA_VALID
482483 jno .Lmcck_panic
483484#if IS_ENABLED(CONFIG_KVM)
484- lg %r10 ,__LC_CURRENT
485+ lg %r10 ,__LC_CURRENT( %r13 )
485486 tm __TI_sie(%r10 ),0xff
486487 jz .Lmcck_user
487488 # Need to compare the address instead of __TI_SIE flag.
@@ -496,15 +497,15 @@ SYM_CODE_START(mcck_int_handler)
496497 lg %r10 ,__LC_PCPU
497498 oi __PCPU_FLAGS+7 (%r10 ), _CIF_MCCK_GUEST
4984994: BPENTER __SF_SIE_FLAGS(%r15 ),_TIF_ISOLATE_BP_GUEST
499- SIEEXIT __SF_SIE_CONTROL(%r15 ),%r0
500+ SIEEXIT __SF_SIE_CONTROL(%r15 ),%r13
500501#endif
501502.Lmcck_user:
502- lg %r15 ,__LC_MCCK_STACK
503+ lg %r15 ,__LC_MCCK_STACK( %r13 )
503504 la %r11 ,STACK_FRAME_OVERHEAD(%r15 )
504505 stctg %c1,%c1,__PT_CR1(%r11 )
505- lctlg %c1,%c1,__LC_KERNEL_ASCE
506+ lctlg %c1,%c1,__LC_KERNEL_ASCE( %r13 )
506507 xc __SF_BACKCHAIN(8 ,%r15 ),__SF_BACKCHAIN(%r15 )
507- lghi %r14 ,__LC_GPREGS_SAVE_AREA
508+ lay %r14 ,__LC_GPREGS_SAVE_AREA( %r13 )
508509 mvc __PT_R0(128 ,%r11 ),0 (%r14 )
509510 # clear user controlled registers to prevent speculative use
510511 xgr %r0,%r0
@@ -522,12 +523,13 @@ SYM_CODE_START(mcck_int_handler)
522523 brasl %r14 ,s390_do_machine_check
523524 lctlg %c1,%c1,__PT_CR1(%r11 )
524525 lmg %r0,%r10 ,__PT_R0(%r11 )
525- mvc __LC_RETURN_MCCK_PSW(16 ),__PT_PSW(%r11 ) # move return PSW
526- tm __LC_RETURN_MCCK_PSW+1 ,0x01 # returning to user ?
526+ mvc __LC_RETURN_MCCK_PSW(16 , %r13 ),__PT_PSW(%r11 ) # move return PSW
527+ tm __LC_RETURN_MCCK_PSW+1 ( %r13 ) ,0x01 # returning to user ?
527528 jno 0f
528529 BPON
529- stpt __LC_EXIT_TIMER
530- 0: ALTERNATIVE "nop" , __stringify(lghi %r12 ,__LC_LAST_BREAK_SAVE_AREA), ALT_FACILITY(193 )
530+ stpt __LC_EXIT_TIMER(%r13 )
531+ 0: ALTERNATIVE "brcl 0,0" , __stringify(lay %r12 ,__LC_LAST_BREAK_SAVE_AREA(%r13 )),\
532+ ALT_FACILITY(193 )
531533 LBEAR 0 (%r12 )
532534 lmg %r11 ,%r15 ,__PT_R11(%r11 )
533535 LPSWEY __LC_RETURN_MCCK_PSW,__LC_RETURN_MCCK_LPSWE
0 commit comments