|
@@ -518,6 +518,7 @@ ENTRY(pgm_check_handler)
|
|
|
stmg %r8,%r15,__LC_SAVE_AREA_SYNC
|
|
stmg %r8,%r15,__LC_SAVE_AREA_SYNC
|
|
|
lg %r10,__LC_LAST_BREAK
|
|
lg %r10,__LC_LAST_BREAK
|
|
|
lg %r12,__LC_CURRENT
|
|
lg %r12,__LC_CURRENT
|
|
|
|
|
+ lghi %r11,0
|
|
|
larl %r13,cleanup_critical
|
|
larl %r13,cleanup_critical
|
|
|
lmg %r8,%r9,__LC_PGM_OLD_PSW
|
|
lmg %r8,%r9,__LC_PGM_OLD_PSW
|
|
|
tmhh %r8,0x0001 # test problem state bit
|
|
tmhh %r8,0x0001 # test problem state bit
|
|
@@ -532,6 +533,7 @@ ENTRY(pgm_check_handler)
|
|
|
ni __SIE_PROG0C+3(%r14),0xfe # no longer in SIE
|
|
ni __SIE_PROG0C+3(%r14),0xfe # no longer in SIE
|
|
|
lctlg %c1,%c1,__LC_USER_ASCE # load primary asce
|
|
lctlg %c1,%c1,__LC_USER_ASCE # load primary asce
|
|
|
larl %r9,sie_exit # skip forward to sie_exit
|
|
larl %r9,sie_exit # skip forward to sie_exit
|
|
|
|
|
+ lghi %r11,_PIF_GUEST_FAULT
|
|
|
#endif
|
|
#endif
|
|
|
0: tmhh %r8,0x4000 # PER bit set in old PSW ?
|
|
0: tmhh %r8,0x4000 # PER bit set in old PSW ?
|
|
|
jnz 1f # -> enabled, can't be a double fault
|
|
jnz 1f # -> enabled, can't be a double fault
|
|
@@ -549,13 +551,14 @@ ENTRY(pgm_check_handler)
|
|
|
jz 3f
|
|
jz 3f
|
|
|
mvc __THREAD_trap_tdb(256,%r14),0(%r13)
|
|
mvc __THREAD_trap_tdb(256,%r14),0(%r13)
|
|
|
3: stg %r10,__THREAD_last_break(%r14)
|
|
3: stg %r10,__THREAD_last_break(%r14)
|
|
|
-4: la %r11,STACK_FRAME_OVERHEAD(%r15)
|
|
|
|
|
|
|
+4: lgr %r13,%r11
|
|
|
|
|
+ la %r11,STACK_FRAME_OVERHEAD(%r15)
|
|
|
stmg %r0,%r7,__PT_R0(%r11)
|
|
stmg %r0,%r7,__PT_R0(%r11)
|
|
|
mvc __PT_R8(64,%r11),__LC_SAVE_AREA_SYNC
|
|
mvc __PT_R8(64,%r11),__LC_SAVE_AREA_SYNC
|
|
|
stmg %r8,%r9,__PT_PSW(%r11)
|
|
stmg %r8,%r9,__PT_PSW(%r11)
|
|
|
mvc __PT_INT_CODE(4,%r11),__LC_PGM_ILC
|
|
mvc __PT_INT_CODE(4,%r11),__LC_PGM_ILC
|
|
|
mvc __PT_INT_PARM_LONG(8,%r11),__LC_TRANS_EXC_CODE
|
|
mvc __PT_INT_PARM_LONG(8,%r11),__LC_TRANS_EXC_CODE
|
|
|
- xc __PT_FLAGS(8,%r11),__PT_FLAGS(%r11)
|
|
|
|
|
|
|
+ stg %r13,__PT_FLAGS(%r11)
|
|
|
stg %r10,__PT_ARGS(%r11)
|
|
stg %r10,__PT_ARGS(%r11)
|
|
|
tm __LC_PGM_ILC+3,0x80 # check for per exception
|
|
tm __LC_PGM_ILC+3,0x80 # check for per exception
|
|
|
jz 5f
|
|
jz 5f
|