X86: Fix the segment setting code in IRET, and make it restore the flags.
This commit is contained in:
parent
349a155b6e
commit
e3004c579f
1 changed files with 3 additions and 2 deletions
|
@ -190,8 +190,8 @@ processSSDescriptor:
|
||||||
|
|
||||||
# This actually updates state which is wrong. It should wait until we know
|
# This actually updates state which is wrong. It should wait until we know
|
||||||
# we're not going to fault. Unfortunately, that's hard to do.
|
# we're not going to fault. Unfortunately, that's hard to do.
|
||||||
wrdl cs, t7, t2
|
wrdl ss, t7, t2
|
||||||
wrsel cs, t2
|
wrsel ss, t2
|
||||||
|
|
||||||
###
|
###
|
||||||
### From this point downwards, we can't fault. We can update user visible state.
|
### From this point downwards, we can't fault. We can update user visible state.
|
||||||
|
@ -224,6 +224,7 @@ skipSegmentSquashing:
|
||||||
|
|
||||||
# Ignore this for now.
|
# Ignore this for now.
|
||||||
#RFLAGS.v = temp_RFLAGS
|
#RFLAGS.v = temp_RFLAGS
|
||||||
|
wrflags t0, t3
|
||||||
# VIF,VIP,IOPL only changed if (old_CPL = 0)
|
# VIF,VIP,IOPL only changed if (old_CPL = 0)
|
||||||
# IF only changed if (old_CPL <= old_RFLAGS.IOPL)
|
# IF only changed if (old_CPL <= old_RFLAGS.IOPL)
|
||||||
# VM unchanged
|
# VM unchanged
|
||||||
|
|
Loading…
Reference in a new issue