X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmem%2Fpage_table.hh;h=fce063280ff98c9e9c49ba630c02ee891b3b9dd9;hb=bc732b59fd82689490306090974f1f4c06741b0a;hp=f7212d42311a1616e8e5f90bb8d6d88b9bf0320b;hpb=984c2a4ff677803ff7687a178f1dceb1f0204c30;p=gem5.git diff --git a/src/mem/page_table.hh b/src/mem/page_table.hh index f7212d423..fce063280 100644 --- a/src/mem/page_table.hh +++ b/src/mem/page_table.hh @@ -37,9 +37,10 @@ #define __PAGE_TABLE__ #include -#include +#include "sim/faults.hh" #include "arch/isa_traits.hh" +#include "base/hashmap.hh" #include "base/trace.hh" #include "mem/request.hh" #include "mem/packet.hh" @@ -48,12 +49,19 @@ class System; /** - * Page Table Decleration. + * Page Table Declaration. */ class PageTable { protected: - std::map pTable; + m5::hash_map pTable; + + struct cacheElement { + Addr paddr; + Addr vaddr; + } ; + + struct cacheElement pTableCache[3]; const Addr pageSize; const Addr offsetMask; @@ -69,9 +77,9 @@ class PageTable Addr pageAlign(Addr a) { return (a & ~offsetMask); } Addr pageOffset(Addr a) { return (a & offsetMask); } - Fault page_check(Addr addr, int size) const; + Fault page_check(Addr addr, int64_t size) const; - void allocate(Addr vaddr, int size); + void allocate(Addr vaddr, int64_t size); /** * Translate function