X86: Fix a bad segmentation check for the stack segment.

--HG--
extra : rebase_source : 755f4f6eae52f88ed516a1f1ac9e2565725d89c1
This commit is contained in:
Gabe Black 2011-12-01 00:17:14 -05:00
parent e436d187e7
commit 93fb460fad

View file

@ -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: