36 #ifndef __MEM_MULTI_LEVEL_PAGE_TABLE_HH__
37 #define __MEM_MULTI_LEVEL_PAGE_TABLE_HH__
41 #include "arch/tlb.hh"
43 #include "config/the_isa.hh"
103 template <
class ISAOps>
150 uint64_t flags = 0)
override;
158 #endif // __MEM_MULTI_LEVEL_PAGE_TABLE_HH__
ISAOps pTableISAOps
ISA specific operations.
ThreadContext is the external interface to all thread state for anything outside of the CPU...
MultiLevelPageTable(const std::string &__name, uint64_t _pid, System *_sys)
bool lookup(Addr vaddr, TheISA::TlbEntry &entry) override
Lookup function.
void initState(ThreadContext *tc) override
const uint64_t numLevels
Number of levels contained by the page table.
void remap(Addr vaddr, int64_t size, Addr new_vaddr) override
TlbEntry(Addr asn, Addr _vaddr, Addr _paddr, bool uncacheable, bool read_only)
Defines global host-dependent types: Counter, Tick, and (indirectly) {int,uint}{8,16,32,64}_t.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Declaration of base class for page table.
void map(Addr vaddr, Addr paddr, int64_t size, uint64_t flags=0) override
Maps a virtual memory region to a physical memory region.
const std::vector< uint8_t > logLevelSize
Vector with sizes of all levels in base 2 logarithmic.
bool walk(Addr vaddr, bool allocate, Addr &PTE_addr)
Method for walking the page table.
Declarations of a non-full system Page Table.
This class implements an in-memory multi-level page table that can be configured to follow ISA specif...
std::ostream CheckpointOut
void unserialize(CheckpointIn &cp) override
Unserialize an object.
void unmap(Addr vaddr, int64_t size) override
Addr basePtr
Physical address to the last level of the page table.
bool isUnmapped(Addr vaddr, int64_t size) override
Check if any pages in a region are already allocated.
System * system
Pointer to System object.
void serialize(CheckpointOut &cp) const override
Serialize an object.