|
gem5
|
#include <table_walker.hh>
Public Types | |
| enum | EntryType { Ignore, PageTable, Section, Reserved } |
| Type of page table entry ARM DDI 0406B: B3-8. More... | |
Public Member Functions | |
| L1Descriptor () | |
| Default ctor. More... | |
| virtual uint64_t | getRawData () const |
| virtual std::string | dbgHeader () const |
| virtual uint8_t | offsetBits () const |
| EntryType | type () const |
| bool | supersection () const |
| Is the page a Supersection (16MB)? More... | |
| Addr | paddr () const |
| Return the physcal address of the entry, bits in position. More... | |
| Addr | paddr (Addr va) const |
| Return the physcal address of the entry, bits in position. More... | |
| Addr | pfn () const |
| Return the physical frame, bits shifted right. More... | |
| bool | global (WalkerState *currState) const |
| Is the translation global (no asid used)? More... | |
| bool | xn () const |
| Is the translation not allow execution? More... | |
| uint8_t | ap () const |
| Three bit access protection flags. More... | |
| TlbEntry::DomainType | domain () const |
| Domain Client/Manager: ARM DDI 0406B: B3-31. More... | |
| Addr | l2Addr () const |
| Address of L2 descriptor if it exists. More... | |
| uint8_t | texcb () const |
| Memory region attributes: ARM DDI 0406B: B3-32. More... | |
| bool | shareable () const |
| If the section is shareable. More... | |
| void | setAp0 () |
| Set access flag that this entry has been touched. More... | |
| bool | dirty () const |
| This entry needs to be written back to memory. More... | |
| bool | secure (bool have_security, WalkerState *currState) const |
| Returns true if this entry targets the secure physical address map. More... | |
Public Attributes | |
| uint32_t | data |
| The raw bits of the entry. More... | |
| bool | _dirty |
| This entry has been modified (access flag set) and needs to be written back to memory. More... | |
Public Attributes inherited from ArmISA::TableWalker::DescriptorBase | |
| LookupLevel | lookupLevel |
| Current lookup level for this descriptor. More... | |
Definition at line 91 of file table_walker.hh.
Type of page table entry ARM DDI 0406B: B3-8.
| Enumerator | |
|---|---|
| Ignore | |
| PageTable | |
| Section | |
| Reserved | |
Definition at line 94 of file table_walker.hh.
|
inline |
Default ctor.
Definition at line 109 of file table_walker.hh.
References ArmISA::L1, and ArmISA::TableWalker::DescriptorBase::lookupLevel.
|
inlinevirtual |
Three bit access protection flags.
Implements ArmISA::TableWalker::DescriptorBase.
Definition at line 177 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doL1Descriptor().
|
inlinevirtual |
Implements ArmISA::TableWalker::DescriptorBase.
Definition at line 119 of file table_walker.hh.
|
inline |
This entry needs to be written back to memory.
Definition at line 220 of file table_walker.hh.
References _dirty.
|
inlinevirtual |
Domain Client/Manager: ARM DDI 0406B: B3-31.
Implements ArmISA::TableWalker::DescriptorBase.
Definition at line 183 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doL1Descriptor(), ArmISA::TableWalker::doL2Descriptor(), and ArmISA::TableWalker::L2Descriptor::domain().
|
inlinevirtual |
Implements ArmISA::TableWalker::DescriptorBase.
Definition at line 114 of file table_walker.hh.
References data.
|
inlinevirtual |
Is the translation global (no asid used)?
Implements ArmISA::TableWalker::DescriptorBase.
Definition at line 165 of file table_walker.hh.
|
inline |
Address of L2 descriptor if it exists.
Definition at line 189 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doL1Descriptor().
|
inlinevirtual |
Implements ArmISA::TableWalker::DescriptorBase.
Definition at line 124 of file table_walker.hh.
|
inline |
Return the physcal address of the entry, bits in position.
Definition at line 141 of file table_walker.hh.
References data, mbits(), panic, and supersection().
Return the physcal address of the entry, bits in position.
Definition at line 148 of file table_walker.hh.
References data, mbits(), panic, and supersection().
|
inlinevirtual |
Return the physical frame, bits shifted right.
Implements ArmISA::TableWalker::DescriptorBase.
Definition at line 157 of file table_walker.hh.
References bits(), data, panic, and supersection().
|
inlinevirtual |
Returns true if this entry targets the secure physical address map.
Implements ArmISA::TableWalker::DescriptorBase.
Definition at line 229 of file table_walker.hh.
References bits(), data, PageTable, and type().
Referenced by ArmISA::TableWalker::L2Descriptor::secure().
|
inline |
Set access flag that this entry has been touched.
Mark the entry as requiring a writeback, in the future.
Definition at line 213 of file table_walker.hh.
|
inlinevirtual |
If the section is shareable.
See texcb() comment.
Reimplemented from ArmISA::TableWalker::DescriptorBase.
Definition at line 205 of file table_walker.hh.
|
inline |
Is the page a Supersection (16MB)?
Definition at line 135 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doL1Descriptor(), paddr(), and pfn().
|
inlinevirtual |
Memory region attributes: ARM DDI 0406B: B3-32.
These bits are largly ignored by M5 and only used to provide the illusion that the memory system cares about anything but cachable vs. uncachable.
Reimplemented from ArmISA::TableWalker::DescriptorBase.
Definition at line 199 of file table_walker.hh.
|
inline |
Definition at line 129 of file table_walker.hh.
References data.
Referenced by ArmISA::TableWalker::doL1Descriptor(), and secure().
|
inlinevirtual |
Is the translation not allow execution?
Implements ArmISA::TableWalker::DescriptorBase.
Definition at line 171 of file table_walker.hh.
| bool ArmISA::TableWalker::L1Descriptor::_dirty |
This entry has been modified (access flag set) and needs to be written back to memory.
Definition at line 106 of file table_walker.hh.
| uint32_t ArmISA::TableWalker::L1Descriptor::data |
The raw bits of the entry.
Definition at line 102 of file table_walker.hh.
Referenced by ap(), ArmISA::TableWalker::doL1Descriptor(), ArmISA::TableWalker::doL1DescriptorWrapper(), domain(), getRawData(), global(), l2Addr(), paddr(), pfn(), ArmISA::TableWalker::processWalk(), secure(), setAp0(), shareable(), supersection(), texcb(), type(), and xn().