diff options
Diffstat (limited to 'src/arch/x86')
-rw-r--r-- | src/arch/x86/remote_gdb.cc | 3 | ||||
-rw-r--r-- | src/arch/x86/tlb.cc | 15 | ||||
-rw-r--r-- | src/arch/x86/tlb.hh | 2 |
3 files changed, 9 insertions, 11 deletions
diff --git a/src/arch/x86/remote_gdb.cc b/src/arch/x86/remote_gdb.cc index 175cabba3..956459373 100644 --- a/src/arch/x86/remote_gdb.cc +++ b/src/arch/x86/remote_gdb.cc @@ -88,8 +88,7 @@ RemoteGDB::acc(Addr va, size_t len) BaseTLB::Read); return fault == NoFault; } else { - TlbEntry entry; - return context()->getProcessPtr()->pTable->lookup(va, entry); + return context()->getProcessPtr()->pTable->lookup(va) != nullptr; } } diff --git a/src/arch/x86/tlb.cc b/src/arch/x86/tlb.cc index 0b1df9e21..93369494d 100644 --- a/src/arch/x86/tlb.cc +++ b/src/arch/x86/tlb.cc @@ -94,7 +94,7 @@ TLB::evictLRU() } TlbEntry * -TLB::insert(Addr vpn, TlbEntry &entry) +TLB::insert(Addr vpn, const TlbEntry &entry) { // If somebody beat us to it, just use that existing entry. TlbEntry *newEntry = trie.lookup(vpn); @@ -357,23 +357,22 @@ TLB::translate(RequestPtr req, ThreadContext *tc, Translation *translation, assert(entry); } else { Process *p = tc->getProcessPtr(); - TlbEntry newEntry; - bool success = p->pTable->lookup(vaddr, newEntry); - if (!success && mode != Execute) { + TlbEntry *newEntry = p->pTable->lookup(vaddr); + if (!newEntry && mode != Execute) { // Check if we just need to grow the stack. if (p->fixupStackFault(vaddr)) { // If we did, lookup the entry for the new page. - success = p->pTable->lookup(vaddr, newEntry); + newEntry = p->pTable->lookup(vaddr); } } - if (!success) { + if (!newEntry) { return std::make_shared<PageFault>(vaddr, true, mode, true, false); } else { Addr alignedVaddr = p->pTable->pageAlign(vaddr); DPRINTF(TLB, "Mapping %#x to %#x\n", alignedVaddr, - newEntry.pageStart()); - entry = insert(alignedVaddr, newEntry); + newEntry->pageStart()); + entry = insert(alignedVaddr, *newEntry); } DPRINTF(TLB, "Miss was serviced.\n"); } diff --git a/src/arch/x86/tlb.hh b/src/arch/x86/tlb.hh index c3dc83bb2..08804a455 100644 --- a/src/arch/x86/tlb.hh +++ b/src/arch/x86/tlb.hh @@ -144,7 +144,7 @@ namespace X86ISA Fault finalizePhysical(RequestPtr req, ThreadContext *tc, Mode mode) const override; - TlbEntry * insert(Addr vpn, TlbEntry &entry); + TlbEntry *insert(Addr vpn, const TlbEntry &entry); /* * Function to register Stats |