From: Gabe Black Date: Thu, 12 Jun 2008 04:51:50 +0000 (-0400) Subject: X86: In non 64bit mode, throw a fault when a NULL segment is accessed. X-Git-Tag: m5_2.0_beta6~151 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b05299253fdd5a8a913f2799b7cdd2df040c8559;p=gem5.git X86: In non 64bit mode, throw a fault when a NULL segment is accessed. --- diff --git a/src/arch/x86/tlb.cc b/src/arch/x86/tlb.cc index f5e214a88..5d101a5ae 100644 --- a/src/arch/x86/tlb.cc +++ b/src/arch/x86/tlb.cc @@ -571,6 +571,9 @@ TLB::translate(RequestPtr &req, ThreadContext *tc, bool write, bool execute) // If we're not in 64-bit mode, do protection/limit checks if (!efer.lma || !csAttr.longMode) { DPRINTF(TLB, "Not in long mode. Checking segment protection.\n"); + // Check for a NULL segment selector. + if (!tc->readMiscRegNoEffect(MISCREG_SEG_SEL(seg))) + return new GeneralProtection(0); SegAttr attr = tc->readMiscRegNoEffect(MISCREG_SEG_ATTR(seg)); if (!attr.writable && write) return new GeneralProtection(0);