@@ -406,6 +406,7 @@ ENTRY(system_call)
406406 mvc __PT_PSW(16 ,%r11 ),__LC_SVC_OLD_PSW
407407 mvc __PT_INT_CODE(4 ,%r11 ),__LC_SVC_ILC
408408 stg %r14 ,__PT_FLAGS(%r11 )
409+ xc __SF_BACKCHAIN(8 ,%r15 ),__SF_BACKCHAIN(%r15 )
409410 ENABLE_INTS
410411.Lsysc_do_svc:
411412 # clear user controlled register to prevent speculative use
@@ -422,7 +423,6 @@ ENTRY(system_call)
422423 jnl .Lsysc_nr_ok
423424 slag %r8 ,%r1,3
424425.Lsysc_nr_ok:
425- xc __SF_BACKCHAIN(8 ,%r15 ),__SF_BACKCHAIN(%r15 )
426426 stg %r2,__PT_ORIG_GPR2(%r11 )
427427 stg %r7,STACK_FRAME_OVERHEAD(%r15 )
428428 lg %r9 ,0 (%r8 ,%r10 ) # get system call add.
@@ -712,8 +712,8 @@ ENTRY(pgm_check_handler)
712712 mvc __THREAD_per_address(8 ,%r14 ),__LC_PER_ADDRESS
713713 mvc __THREAD_per_cause(2 ,%r14 ),__LC_PER_CODE
714714 mvc __THREAD_per_paid(1 ,%r14 ),__LC_PER_ACCESS_ID
715- 6: RESTORE_SM_CLEAR_PER
716- xc __SF_BACKCHAIN( 8 , %r15 ),__SF_BACKCHAIN( %r15 )
715+ 6: xc __SF_BACKCHAIN( 8 , %r15 ),__SF_BACKCHAIN( %r15 )
716+ RESTORE_SM_CLEAR_PER
717717 larl %r1,pgm_check_table
718718 llgh %r10 ,__PT_INT_CODE+2 (%r11 )
719719 nill %r10 ,0x007f
@@ -734,8 +734,8 @@ ENTRY(pgm_check_handler)
734734# PER event in supervisor state, must be kprobes
735735#
736736.Lpgm_kprobe:
737- RESTORE_SM_CLEAR_PER
738737 xc __SF_BACKCHAIN(8 ,%r15 ),__SF_BACKCHAIN(%r15 )
738+ RESTORE_SM_CLEAR_PER
739739 lgr %r2,%r11 # pass pointer to pt_regs
740740 brasl %r14 ,do_per_trap
741741 j .Lpgm_return
@@ -777,10 +777,10 @@ ENTRY(io_int_handler)
777777 stmg %r8 ,%r9 ,__PT_PSW(%r11 )
778778 mvc __PT_INT_CODE(12 ,%r11 ),__LC_SUBCHANNEL_ID
779779 xc __PT_FLAGS(8 ,%r11 ),__PT_FLAGS(%r11 )
780+ xc __SF_BACKCHAIN(8 ,%r15 ),__SF_BACKCHAIN(%r15 )
780781 TSTMSK __LC_CPU_FLAGS,_CIF_IGNORE_IRQ
781782 jo .Lio_restore
782783 TRACE_IRQS_OFF
783- xc __SF_BACKCHAIN(8 ,%r15 ),__SF_BACKCHAIN(%r15 )
784784.Lio_loop:
785785 lgr %r2,%r11 # pass pointer to pt_regs
786786 lghi %r3,IO_INTERRUPT
@@ -980,10 +980,10 @@ ENTRY(ext_int_handler)
980980 mvc __PT_INT_PARM(4 ,%r11 ),__LC_EXT_PARAMS
981981 mvc __PT_INT_PARM_LONG(8 ,%r11 ),0 (%r1)
982982 xc __PT_FLAGS(8 ,%r11 ),__PT_FLAGS(%r11 )
983+ xc __SF_BACKCHAIN(8 ,%r15 ),__SF_BACKCHAIN(%r15 )
983984 TSTMSK __LC_CPU_FLAGS,_CIF_IGNORE_IRQ
984985 jo .Lio_restore
985986 TRACE_IRQS_OFF
986- xc __SF_BACKCHAIN(8 ,%r15 ),__SF_BACKCHAIN(%r15 )
987987 lgr %r2,%r11 # pass pointer to pt_regs
988988 lghi %r3,EXT_INTERRUPT
989989 brasl %r14 ,do_IRQ
0 commit comments