diff options
Diffstat (limited to 'src/arch/alpha')
-rw-r--r-- | src/arch/alpha/faults.cc | 29 |
1 files changed, 10 insertions, 19 deletions
diff --git a/src/arch/alpha/faults.cc b/src/arch/alpha/faults.cc index 4a829cd9b..89b0ecea8 100644 --- a/src/arch/alpha/faults.cc +++ b/src/arch/alpha/faults.cc @@ -196,14 +196,11 @@ ItbPageFault::invoke(ThreadContext *tc, const StaticInstPtr &inst) } Process *p = tc->getProcessPtr(); - TlbEntry entry; - bool success = p->pTable->lookup(pc, entry); - if (!success) { - panic("Tried to execute unmapped address %#x.\n", pc); - } else { - VAddr vaddr(pc); - dynamic_cast<TLB *>(tc->getITBPtr())->insert(vaddr.page(), entry); - } + TlbEntry *entry = p->pTable->lookup(pc); + panic_if(!entry, "Tried to execute unmapped address %#x.\n", pc); + + VAddr vaddr(pc); + dynamic_cast<TLB *>(tc->getITBPtr())->insert(vaddr.page(), *entry); } void @@ -215,17 +212,11 @@ NDtbMissFault::invoke(ThreadContext *tc, const StaticInstPtr &inst) } Process *p = tc->getProcessPtr(); - TlbEntry entry; - bool success = p->pTable->lookup(vaddr, entry); - if (!success) { - if (p->fixupStackFault(vaddr)) - success = p->pTable->lookup(vaddr, entry); - } - if (!success) { - panic("Tried to access unmapped address %#x.\n", (Addr)vaddr); - } else { - dynamic_cast<TLB *>(tc->getDTBPtr())->insert(vaddr.page(), entry); - } + TlbEntry *entry = p->pTable->lookup(vaddr); + if (!entry && p->fixupStackFault(vaddr)) + entry = p->pTable->lookup(vaddr); + panic_if(!entry, "Tried to access unmapped address %#x.\n", (Addr)vaddr); + dynamic_cast<TLB *>(tc->getDTBPtr())->insert(vaddr.page(), *entry); } } // namespace AlphaISA |