X86: Some segment selectors can be used when "NULL".
This commit is contained in:
parent
a0cc081997
commit
3b1b21cb15
|
@ -571,7 +571,10 @@ TLB::translate(RequestPtr req, ThreadContext *tc, Translation *translation,
|
||||||
if (!efer.lma || !csAttr.longMode) {
|
if (!efer.lma || !csAttr.longMode) {
|
||||||
DPRINTF(TLB, "Not in long mode. Checking segment protection.\n");
|
DPRINTF(TLB, "Not in long mode. Checking segment protection.\n");
|
||||||
// Check for a NULL segment selector.
|
// Check for a NULL segment selector.
|
||||||
if (!tc->readMiscRegNoEffect(MISCREG_SEG_SEL(seg)))
|
if (!(seg == SEGMENT_REG_TSG || seg == SYS_SEGMENT_REG_IDTR ||
|
||||||
|
seg == SEGMENT_REG_HS || seg == SEGMENT_REG_LS ||
|
||||||
|
seg == SEGMENT_REG_MS)
|
||||||
|
&& !tc->readMiscRegNoEffect(MISCREG_SEG_SEL(seg)))
|
||||||
return new GeneralProtection(0);
|
return new GeneralProtection(0);
|
||||||
bool expandDown = false;
|
bool expandDown = false;
|
||||||
SegAttr attr = tc->readMiscRegNoEffect(MISCREG_SEG_ATTR(seg));
|
SegAttr attr = tc->readMiscRegNoEffect(MISCREG_SEG_ATTR(seg));
|
||||||
|
|
Loading…
Reference in a new issue