X86: Don't panic on faults on prefetches in SE mode.
This commit is contained in:
parent
44e912c6bd
commit
bbbfdee2ed
1 changed files with 15 additions and 11 deletions
|
@ -637,17 +637,21 @@ TLB::translate(RequestPtr req, ThreadContext *tc, Translation *translation,
|
|||
success = p->pTable->lookup(vaddr, newEntry);
|
||||
}
|
||||
if (!success) {
|
||||
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);
|
||||
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);
|
||||
}
|
||||
} else {
|
||||
Addr alignedVaddr = p->pTable->pageAlign(vaddr);
|
||||
DPRINTF(TLB, "Mapping %#x to %#x\n", alignedVaddr,
|
||||
|
|
Loading…
Reference in a new issue