changeset 755f4f6eae52 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=755f4f6eae52
description:
X86: Fix a bad segmentation check for the stack segment.
diffstat:
src/arch/x86/isa/microops/regop.isa | 11 +++++------
1 files changed, 5 insertions(+), 6 deletions(-)
diffs (25 lines):
diff -r 954a009a9f8e -r 755f4f6eae52 src/arch/x86/isa/microops/regop.isa
--- a/src/arch/x86/isa/microops/regop.isa Wed Nov 30 18:57:11 2011 -0500
+++ b/src/arch/x86/isa/microops/regop.isa Thu Dec 01 00:17:14 2011 -0500
@@ -1335,16 +1335,15 @@
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:
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev