X86: Fix a bad segmentation check for the stack segment.
--HG-- extra : rebase_source : 755f4f6eae52f88ed516a1f1ac9e2565725d89c1
This commit is contained in:
parent
e436d187e7
commit
93fb460fad
1 changed files with 5 additions and 6 deletions
|
@ -1335,16 +1335,15 @@ let {{
|
|||
if (selector.si || selector.ti) {
|
||||
if (!desc.p) {
|
||||
fault = new StackFault(selector);
|
||||
}
|
||||
} else {
|
||||
if ((m5reg.submode != SixtyFourBitMode ||
|
||||
m5reg.cpl == 3) ||
|
||||
!(desc.s == 1 &&
|
||||
desc.type.codeOrData == 0 && desc.type.w) ||
|
||||
} else if (!(desc.s == 1 && desc.type.codeOrData == 0 &&
|
||||
desc.type.w) ||
|
||||
(desc.dpl != m5reg.cpl) ||
|
||||
(selector.rpl != m5reg.cpl)) {
|
||||
fault = new GeneralProtection(selector);
|
||||
}
|
||||
} else if (m5reg.submode != SixtyFourBitMode ||
|
||||
m5reg.cpl == 3) {
|
||||
fault = new GeneralProtection(selector);
|
||||
}
|
||||
break;
|
||||
case SegIretCheck:
|
||||
|
|
Loading…
Reference in a new issue