|
@@ -297,10 +297,10 @@ ENTRY(__switch_to)
|
|
|
ENTRY(sie64a)
|
|
|
stmg %r6,%r14,__SF_GPRS(%r15) # save kernel registers
|
|
|
lg %r12,__LC_CURRENT
|
|
|
- stg %r2,__SF_EMPTY(%r15) # save control block pointer
|
|
|
- stg %r3,__SF_EMPTY+8(%r15) # save guest register save area
|
|
|
- xc __SF_EMPTY+16(8,%r15),__SF_EMPTY+16(%r15) # reason code = 0
|
|
|
- mvc __SF_EMPTY+24(8,%r15),__TI_flags(%r12) # copy thread flags
|
|
|
+ stg %r2,__SF_SIE_CONTROL(%r15) # save control block pointer
|
|
|
+ stg %r3,__SF_SIE_SAVEAREA(%r15) # save guest register save area
|
|
|
+ xc __SF_SIE_REASON(8,%r15),__SF_SIE_REASON(%r15) # reason code = 0
|
|
|
+ mvc __SF_SIE_FLAGS(8,%r15),__TI_flags(%r12) # copy thread flags
|
|
|
TSTMSK __LC_CPU_FLAGS,_CIF_FPU # load guest fp/vx registers ?
|
|
|
jno .Lsie_load_guest_gprs
|
|
|
brasl %r14,load_fpu_regs # load guest fp/vx regs
|
|
@@ -311,18 +311,18 @@ ENTRY(sie64a)
|
|
|
jz .Lsie_gmap
|
|
|
lctlg %c1,%c1,__GMAP_ASCE(%r14) # load primary asce
|
|
|
.Lsie_gmap:
|
|
|
- lg %r14,__SF_EMPTY(%r15) # get control block pointer
|
|
|
+ lg %r14,__SF_SIE_CONTROL(%r15) # get control block pointer
|
|
|
oi __SIE_PROG0C+3(%r14),1 # we are going into SIE now
|
|
|
tm __SIE_PROG20+3(%r14),3 # last exit...
|
|
|
jnz .Lsie_skip
|
|
|
TSTMSK __LC_CPU_FLAGS,_CIF_FPU
|
|
|
jo .Lsie_skip # exit if fp/vx regs changed
|
|
|
- BPEXIT __SF_EMPTY+24(%r15),(_TIF_ISOLATE_BP|_TIF_ISOLATE_BP_GUEST)
|
|
|
+ BPEXIT __SF_SIE_FLAGS(%r15),(_TIF_ISOLATE_BP|_TIF_ISOLATE_BP_GUEST)
|
|
|
.Lsie_entry:
|
|
|
sie 0(%r14)
|
|
|
.Lsie_exit:
|
|
|
BPOFF
|
|
|
- BPENTER __SF_EMPTY+24(%r15),(_TIF_ISOLATE_BP|_TIF_ISOLATE_BP_GUEST)
|
|
|
+ BPENTER __SF_SIE_FLAGS(%r15),(_TIF_ISOLATE_BP|_TIF_ISOLATE_BP_GUEST)
|
|
|
.Lsie_skip:
|
|
|
ni __SIE_PROG0C+3(%r14),0xfe # no longer in SIE
|
|
|
lctlg %c1,%c1,__LC_USER_ASCE # load primary asce
|
|
@@ -341,7 +341,7 @@ ENTRY(sie64a)
|
|
|
nopr 7
|
|
|
.globl sie_exit
|
|
|
sie_exit:
|
|
|
- lg %r14,__SF_EMPTY+8(%r15) # load guest register save area
|
|
|
+ lg %r14,__SF_SIE_SAVEAREA(%r15) # load guest register save area
|
|
|
stmg %r0,%r13,0(%r14) # save guest gprs 0-13
|
|
|
xgr %r0,%r0 # clear guest registers to
|
|
|
xgr %r1,%r1 # prevent speculative use
|
|
@@ -350,11 +350,11 @@ sie_exit:
|
|
|
xgr %r4,%r4
|
|
|
xgr %r5,%r5
|
|
|
lmg %r6,%r14,__SF_GPRS(%r15) # restore kernel registers
|
|
|
- lg %r2,__SF_EMPTY+16(%r15) # return exit reason code
|
|
|
+ lg %r2,__SF_SIE_REASON(%r15) # return exit reason code
|
|
|
BR_R1USE_R14
|
|
|
.Lsie_fault:
|
|
|
lghi %r14,-EFAULT
|
|
|
- stg %r14,__SF_EMPTY+16(%r15) # set exit reason code
|
|
|
+ stg %r14,__SF_SIE_REASON(%r15) # set exit reason code
|
|
|
j sie_exit
|
|
|
|
|
|
EX_TABLE(.Lrewind_pad6,.Lsie_fault)
|
|
@@ -643,7 +643,7 @@ ENTRY(pgm_check_handler)
|
|
|
slg %r14,BASED(.Lsie_critical_start)
|
|
|
clg %r14,BASED(.Lsie_critical_length)
|
|
|
jhe 0f
|
|
|
- lg %r14,__SF_EMPTY(%r15) # get control block pointer
|
|
|
+ lg %r14,__SF_SIE_CONTROL(%r15) # get control block pointer
|
|
|
ni __SIE_PROG0C+3(%r14),0xfe # no longer in SIE
|
|
|
lctlg %c1,%c1,__LC_USER_ASCE # load primary asce
|
|
|
larl %r9,sie_exit # skip forward to sie_exit
|
|
@@ -1353,8 +1353,8 @@ cleanup_critical:
|
|
|
clg %r9,BASED(.Lsie_crit_mcck_length)
|
|
|
jh 1f
|
|
|
oi __LC_CPU_FLAGS+7, _CIF_MCCK_GUEST
|
|
|
-1: BPENTER __SF_EMPTY+24(%r15),(_TIF_ISOLATE_BP|_TIF_ISOLATE_BP_GUEST)
|
|
|
- lg %r9,__SF_EMPTY(%r15) # get control block pointer
|
|
|
+1: BPENTER __SF_SIE_FLAGS(%r15),(_TIF_ISOLATE_BP|_TIF_ISOLATE_BP_GUEST)
|
|
|
+ lg %r9,__SF_SIE_CONTROL(%r15) # get control block pointer
|
|
|
ni __SIE_PROG0C+3(%r9),0xfe # no longer in SIE
|
|
|
lctlg %c1,%c1,__LC_USER_ASCE # load primary asce
|
|
|
larl %r9,sie_exit # skip forward to sie_exit
|