From 2a15bfd79ced20a6d4cbf0a0a4c2fbb1444b9a44 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Fri, 5 Jan 2018 15:01:00 -0800 Subject: arch, mem: Make the page table lookup function return a pointer. This avoids having a copy in the lookup function itself, and the declaration of a lot of temporary TLB entry pointers in callers. The gpu TLB seems to have had the most dependence on the original signature of the lookup function, partially because it was relying on a somewhat unsafe copy to a TLB entry using a base class pointer type. Change-Id: I8b1cf494468163deee000002d243541657faf57f Reviewed-on: https://gem5-review.googlesource.com/7343 Reviewed-by: Gabe Black Maintainer: Gabe Black --- src/mem/page_table.cc | 18 +++++++----------- src/mem/page_table.hh | 4 ++-- 2 files changed, 9 insertions(+), 13 deletions(-) (limited to 'src/mem') diff --git a/src/mem/page_table.cc b/src/mem/page_table.cc index 3854a8ccd..26cc6e537 100644 --- a/src/mem/page_table.cc +++ b/src/mem/page_table.cc @@ -146,29 +146,25 @@ EmulationPageTable::isUnmapped(Addr vaddr, int64_t size) return true; } -bool -EmulationPageTable::lookup(Addr vaddr, TheISA::TlbEntry &entry) +TheISA::TlbEntry * +EmulationPageTable::lookup(Addr vaddr) { Addr page_addr = pageAlign(vaddr); - PTableItr iter = pTable.find(page_addr); - if (iter == pTable.end()) - return false; - - entry = *iter->second; - return true; + return nullptr; + return iter->second; } bool EmulationPageTable::translate(Addr vaddr, Addr &paddr) { - TheISA::TlbEntry entry; - if (!lookup(vaddr, entry)) { + TheISA::TlbEntry *entry = lookup(vaddr); + if (!entry) { DPRINTF(MMU, "Couldn't Translate: %#x\n", vaddr); return false; } - paddr = pageOffset(vaddr) + entry.pageStart(); + paddr = pageOffset(vaddr) + entry->pageStart(); DPRINTF(MMU, "Translating: %#x->%#x\n", vaddr, paddr); return true; } diff --git a/src/mem/page_table.hh b/src/mem/page_table.hh index 30437a6f9..470a3e7d6 100644 --- a/src/mem/page_table.hh +++ b/src/mem/page_table.hh @@ -121,9 +121,9 @@ class EmulationPageTable : public Serializable /** * Lookup function * @param vaddr The virtual address. - * @return entry The page table entry corresponding to vaddr. + * @return The page table entry corresponding to vaddr. */ - virtual bool lookup(Addr vaddr, TheISA::TlbEntry &entry); + virtual TheISA::TlbEntry *lookup(Addr vaddr); /** * Translate function -- cgit v1.2.3