summaryrefslogtreecommitdiff
path: root/src/arch/x86/tlb.cc
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2010-08-23 09:44:19 -0700
committerGabe Black <gblack@eecs.umich.edu>2010-08-23 09:44:19 -0700
commitf6182f948bdc05f3d0949627378ac5d15eea8e58 (patch)
tree2d3d3d9eae9e19a3838d36cdb26e266e07b9b34c /src/arch/x86/tlb.cc
parent172e45fc97373757ff171d145e7b1f5c14573b0f (diff)
downloadgem5-f6182f948bdc05f3d0949627378ac5d15eea8e58.tar.xz
X86: Make the TLB fault instead of panic when something is unmapped in SE mode.
The fault object, if invoked, would then panic. This is a bit less direct, but it means speculative execution won't panic the simulator.
Diffstat (limited to 'src/arch/x86/tlb.cc')
-rw-r--r--src/arch/x86/tlb.cc16
1 files changed, 1 insertions, 15 deletions
diff --git a/src/arch/x86/tlb.cc b/src/arch/x86/tlb.cc
index 43b1ba04e..78efd5b69 100644
--- a/src/arch/x86/tlb.cc
+++ b/src/arch/x86/tlb.cc
@@ -619,21 +619,7 @@ TLB::translate(RequestPtr req, ThreadContext *tc, Translation *translation,
success = p->pTable->lookup(vaddr, newEntry);
}
if (!success) {
- if (req->isPrefetch()) {
- return new PageFault(vaddr, true, mode, true, false);
- } else {
- const char *modeStr = "";
- if (mode == Execute)
- modeStr = "execute";
- else if (mode == Read)
- modeStr = "read";
- else if (mode == Write)
- modeStr = "write";
- else
- modeStr = "?";
- panic("Tried to %s unmapped address %#x.\n",
- modeStr, vaddr);
- }
+ return new PageFault(vaddr, true, mode, true, false);
} else {
Addr alignedVaddr = p->pTable->pageAlign(vaddr);
DPRINTF(TLB, "Mapping %#x to %#x\n", alignedVaddr,