|
gem5
v21.1.0.2
|
Long-descriptor format (LPAE) More...
#include <table_walker.hh>
Public Types | |
| enum | EntryType { Invalid, Table, Block, Page } |
| Descriptor type. More... | |
Public Member Functions | |
| LongDescriptor () | |
| virtual uint64_t | getRawData () const |
| virtual std::string | dbgHeader () const |
| bool | secure (bool have_security, WalkerState *currState) const |
| Returns true if this entry targets the secure physical address map. More... | |
| EntryType | type () const |
| Return the descriptor type. More... | |
| uint8_t | offsetBits () const |
| Return the bit width of the page/block offset. More... | |
| Addr | pfn () const |
| Return the physical frame, bits shifted right. More... | |
| Addr | paddr () const |
| Return the physical address of the entry. More... | |
| Addr | nextTableAddr () const |
| Return the address of the next page table. More... | |
| Addr | nextDescAddr (Addr va) const |
| Return the address of the next descriptor. More... | |
| bool | xn () const |
| Is execution allowed on this mapping? More... | |
| bool | pxn () const |
| Is privileged execution allowed on this mapping? (LPAE only) More... | |
| bool | contiguousHint () const |
| Contiguous hint bit. More... | |
| bool | global (WalkerState *currState) const |
| Is the translation global (no asid used)? More... | |
| bool | af () const |
| Returns true if the access flag (AF) is set. More... | |
| uint8_t | sh () const |
| 2-bit shareability field More... | |
| uint8_t | ap () const |
| 2-bit access protection flags More... | |
| bool | rw () const |
| Read/write access protection flag. More... | |
| bool | user () const |
| User/privileged level access protection flag. More... | |
| TlbEntry::DomainType | domain () const |
| uint8_t | attrIndx () const |
| Attribute index. More... | |
| uint8_t | memAttr () const |
| Memory attributes, only used by stage 2 translations. More... | |
| void | setAf () |
| Set access flag that this entry has been touched. More... | |
| bool | dirty () const |
| This entry needs to be written back to memory. More... | |
| bool | secureTable () const |
| Whether the subsequent levels of lookup are secure. More... | |
| uint8_t | apTable () const |
| Two bit access protection flags for subsequent levels of lookup. More... | |
| uint8_t | rwTable () const |
| R/W protection flag for subsequent levels of lookup. More... | |
| uint8_t | userTable () const |
| User/privileged mode protection flag for subsequent levels of lookup. More... | |
| bool | xnTable () const |
| Is execution allowed on subsequent lookup levels? More... | |
| bool | pxnTable () const |
| Is privileged execution allowed on subsequent lookup levels? More... | |
Public Member Functions inherited from gem5::ArmISA::TableWalker::DescriptorBase | |
| DescriptorBase () | |
| virtual uint8_t | texcb () const |
| virtual bool | shareable () const |
Static Public Member Functions | |
| static uint8_t | ap (bool rw, bool user) |
| Return the AP bits as compatible with the AP[2:0] format. More... | |
Public Attributes | |
| uint64_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... | |
| bool | aarch64 |
| True if the current lookup is performed in AArch64 state. More... | |
| GrainSize | grainSize |
| Width of the granule size in bits. More... | |
| uint8_t | physAddrRange |
Public Attributes inherited from gem5::ArmISA::TableWalker::DescriptorBase | |
| LookupLevel | lookupLevel |
| Current lookup level for this descriptor. More... | |
Long-descriptor format (LPAE)
Definition at line 385 of file table_walker.hh.
|
inline |
Definition at line 397 of file table_walker.hh.
|
inline |
Returns true if the access flag (AF) is set.
Definition at line 610 of file table_walker.hh.
References gem5::bits(), data, Page, and type().
Referenced by gem5::ArmISA::TableWalker::doLongDescriptor().
|
inlinevirtual |
2-bit access protection flags
Implements gem5::ArmISA::TableWalker::DescriptorBase.
Definition at line 624 of file table_walker.hh.
References gem5::bits(), data, Page, and type().
Referenced by gem5::ArmISA::TableWalker::doLongDescriptor(), and gem5::ArmISA::TableWalker::insertTableEntry().
|
inlinestatic |
Return the AP bits as compatible with the AP[2:0] format.
Utility function used to simplify the code in the TLB for performing permission checks.
Definition at line 648 of file table_walker.hh.
|
inline |
Two bit access protection flags for subsequent levels of lookup.
Definition at line 696 of file table_walker.hh.
References gem5::bits(), data, Table, and type().
|
inline |
Attribute index.
Definition at line 661 of file table_walker.hh.
References gem5::bits(), data, Page, and type().
Referenced by gem5::ArmISA::TableWalker::memAttrsAArch64(), and gem5::ArmISA::TableWalker::memAttrsLPAE().
|
inline |
Contiguous hint bit.
Definition at line 585 of file table_walker.hh.
References gem5::bits(), data, Page, and type().
|
inlinevirtual |
Implements gem5::ArmISA::TableWalker::DescriptorBase.
Definition at line 423 of file table_walker.hh.
References gem5::ArmISA::L3, gem5::ArmISA::TableWalker::DescriptorBase::lookupLevel, Page, and type().
|
inline |
This entry needs to be written back to memory.
Definition at line 683 of file table_walker.hh.
References _dirty.
|
inlinevirtual |
Implements gem5::ArmISA::TableWalker::DescriptorBase.
Definition at line 653 of file table_walker.hh.
References gem5::ArmISA::TlbEntry::Client, Page, and type().
|
inlinevirtual |
Implements gem5::ArmISA::TableWalker::DescriptorBase.
Definition at line 418 of file table_walker.hh.
References data.
|
inlinevirtual |
Is the translation global (no asid used)?
Implements gem5::ArmISA::TableWalker::DescriptorBase.
Definition at line 592 of file table_walker.hh.
References gem5::ArmISA::TableWalker::WalkerState::aarch64, gem5::bits(), gem5::ArmISA::TableWalker::currState, data, gem5::ArmISA::TableWalker::WalkerState::el, gem5::ArmISA::EL2, gem5::ArmISA::EL3, gem5::ArmISA::TableWalker::WalkerState::isSecure, Page, gem5::ArmISA::TableWalker::WalkerState::secureLookup, and type().
|
inline |
Memory attributes, only used by stage 2 translations.
Definition at line 668 of file table_walker.hh.
References gem5::bits(), data, Page, and type().
Referenced by gem5::ArmISA::TableWalker::memAttrsAArch64(), and gem5::ArmISA::TableWalker::memAttrsLPAE().
Return the address of the next descriptor.
Definition at line 552 of file table_walker.hh.
References aarch64, gem5::bits(), grainSize, gem5::ArmISA::L1, gem5::ArmISA::TableWalker::DescriptorBase::lookupLevel, nextTableAddr(), gem5::ArmISA::pa, gem5::ArmISA::stride, Table, type(), and gem5::ArmISA::va.
Referenced by gem5::ArmISA::TableWalker::doLongDescriptor().
|
inline |
Return the address of the next page table.
Definition at line 535 of file table_walker.hh.
References aarch64, gem5::bits(), data, gem5::ArmISA::TableWalker::Grain64KB, grainSize, gem5::mbits(), physAddrRange, Table, and type().
Referenced by nextDescAddr().
|
inlinevirtual |
Return the bit width of the page/block offset.
Implements gem5::ArmISA::TableWalker::DescriptorBase.
Definition at line 484 of file table_walker.hh.
References gem5::ArmISA::TableWalker::Grain16KB, gem5::ArmISA::TableWalker::Grain4KB, gem5::ArmISA::TableWalker::Grain64KB, grainSize, gem5::ArmISA::L1, gem5::ArmISA::TableWalker::DescriptorBase::lookupLevel, Page, panic, and type().
|
inline |
Return the physical address of the entry.
Definition at line 520 of file table_walker.hh.
References aarch64, gem5::X86ISA::addr, gem5::bits(), data, gem5::ArmISA::TableWalker::Grain64KB, grainSize, gem5::mbits(), offsetBits(), and physAddrRange.
Referenced by gem5::ArmISA::TableWalker::doLongDescriptor(), and pfn().
|
inlinevirtual |
Return the physical frame, bits shifted right.
Implements gem5::ArmISA::TableWalker::DescriptorBase.
Definition at line 514 of file table_walker.hh.
References offsetBits(), and paddr().
|
inline |
Is privileged execution allowed on this mapping? (LPAE only)
Definition at line 578 of file table_walker.hh.
References gem5::bits(), data, Page, and type().
Referenced by gem5::ArmISA::TableWalker::doLongDescriptor(), and gem5::ArmISA::TableWalker::insertTableEntry().
|
inline |
Is privileged execution allowed on subsequent lookup levels?
Definition at line 725 of file table_walker.hh.
References gem5::bits(), data, Table, and type().
Referenced by gem5::ArmISA::TableWalker::doLongDescriptor().
|
inline |
Read/write access protection flag.
Definition at line 632 of file table_walker.hh.
References gem5::bits(), data, Page, and type().
Referenced by ap().
|
inline |
R/W protection flag for subsequent levels of lookup.
Definition at line 703 of file table_walker.hh.
References gem5::bits(), data, Table, and type().
Referenced by gem5::ArmISA::TableWalker::doLongDescriptor().
|
inlinevirtual |
Returns true if this entry targets the secure physical address map.
Implements gem5::ArmISA::TableWalker::DescriptorBase.
Definition at line 438 of file table_walker.hh.
References gem5::bits(), gem5::ArmISA::TableWalker::currState, data, Page, gem5::ArmISA::TableWalker::WalkerState::secureLookup, and type().
|
inline |
Whether the subsequent levels of lookup are secure.
Definition at line 689 of file table_walker.hh.
References gem5::bits(), data, Table, and type().
Referenced by gem5::ArmISA::TableWalker::doLongDescriptor().
|
inline |
Set access flag that this entry has been touched.
Mark the entry as requiring a writeback, in the future.
Definition at line 676 of file table_walker.hh.
|
inline |
2-bit shareability field
Definition at line 617 of file table_walker.hh.
References gem5::bits(), data, Page, and type().
Referenced by gem5::ArmISA::TableWalker::memAttrsAArch64(), and gem5::ArmISA::TableWalker::memAttrsLPAE().
|
inline |
Return the descriptor type.
Definition at line 445 of file table_walker.hh.
References gem5::bits(), Block, data, gem5::ArmISA::TableWalker::Grain16KB, gem5::ArmISA::TableWalker::Grain4KB, gem5::ArmISA::TableWalker::Grain64KB, grainSize, Invalid, gem5::ArmISA::L0, gem5::ArmISA::L1, gem5::ArmISA::L2, gem5::ArmISA::L3, gem5::ArmISA::TableWalker::DescriptorBase::lookupLevel, Page, physAddrRange, and Table.
Referenced by af(), ap(), apTable(), attrIndx(), contiguousHint(), dbgHeader(), gem5::ArmISA::TableWalker::doLongDescriptor(), domain(), global(), memAttr(), nextDescAddr(), nextTableAddr(), offsetBits(), pxn(), pxnTable(), rw(), rwTable(), secure(), secureTable(), sh(), user(), userTable(), xn(), and xnTable().
|
inline |
User/privileged level access protection flag.
Definition at line 639 of file table_walker.hh.
References gem5::bits(), data, Page, and type().
Referenced by ap().
|
inline |
User/privileged mode protection flag for subsequent levels of lookup.
Definition at line 711 of file table_walker.hh.
References gem5::bits(), data, Table, and type().
Referenced by gem5::ArmISA::TableWalker::doLongDescriptor().
|
inlinevirtual |
Is execution allowed on this mapping?
Implements gem5::ArmISA::TableWalker::DescriptorBase.
Definition at line 571 of file table_walker.hh.
References gem5::bits(), data, Page, and type().
Referenced by gem5::ArmISA::TableWalker::doLongDescriptor().
|
inline |
Is execution allowed on subsequent lookup levels?
Definition at line 718 of file table_walker.hh.
References gem5::bits(), data, Table, and type().
Referenced by gem5::ArmISA::TableWalker::doLongDescriptor().
| bool gem5::ArmISA::TableWalker::LongDescriptor::_dirty |
This entry has been modified (access flag set) and needs to be written back to memory.
Definition at line 407 of file table_walker.hh.
| bool gem5::ArmISA::TableWalker::LongDescriptor::aarch64 |
True if the current lookup is performed in AArch64 state.
Definition at line 410 of file table_walker.hh.
Referenced by nextDescAddr(), nextTableAddr(), paddr(), and gem5::ArmISA::TableWalker::processWalkLPAE().
| uint64_t gem5::ArmISA::TableWalker::LongDescriptor::data |
The raw bits of the entry.
Definition at line 403 of file table_walker.hh.
Referenced by af(), ap(), apTable(), attrIndx(), contiguousHint(), gem5::ArmISA::TableWalker::doLongDescriptor(), getRawData(), global(), memAttr(), nextTableAddr(), paddr(), gem5::ArmISA::TableWalker::processWalkLPAE(), pxn(), pxnTable(), rw(), rwTable(), secure(), secureTable(), setAf(), sh(), type(), user(), userTable(), xn(), and xnTable().
| GrainSize gem5::ArmISA::TableWalker::LongDescriptor::grainSize |
Width of the granule size in bits.
Definition at line 413 of file table_walker.hh.
Referenced by nextDescAddr(), nextTableAddr(), offsetBits(), paddr(), gem5::ArmISA::TableWalker::processWalkLPAE(), and type().
| uint8_t gem5::ArmISA::TableWalker::LongDescriptor::physAddrRange |
Definition at line 415 of file table_walker.hh.
Referenced by nextTableAddr(), paddr(), and type().