gem5 v24.0.0.0
|
#include <table_walker.hh>
Classes | |
struct | LongDescData |
Helper variables used to implement hierarchical access permissions when the long-desc. More... | |
Public Member Functions | |
void | doL1Descriptor () |
void | doL2Descriptor () |
void | doLongDescriptor () |
WalkerState () | |
std::string | name () const |
Public Attributes | ||
ThreadContext * | tc | |
Thread context that we're doing the walk for. | ||
bool | aarch64 | |
If the access is performed in AArch64 state. | ||
ExceptionLevel | el | |
Current exception level. | ||
TranslationRegime | regime | |
Current translation regime. | ||
int | physAddrRange | |
Current physical address range in bits. | ||
RequestPtr | req | |
Request that is currently being serviced. | ||
TlbEntry | walkEntry | |
Initial walk entry allowing to skip lookup levels. | ||
uint16_t | asid | |
ASID that we're servicing the request under. | ||
vmid_t | vmid | |
BaseMMU::Translation * | transState | |
Translation state for delayed requests. | ||
Fault | fault | |
The fault that we are going to return. | ||
Addr | vaddr | |
The virtual address that is being translated with tagging removed. | ||
Addr | vaddr_tainted | |
The virtual address that is being translated. | ||
SCTLR | sctlr | |
Cached copy of the sctlr as it existed when translation began. | ||
SCR | scr | |
Cached copy of the scr as it existed when translation began. | ||
CPSR | cpsr | |
Cached copy of the cpsr as it existed when translation began. | ||
union { | ||
TTBCR ttbcr | ||
TCR tcr | ||
}; | ||
Cached copy of ttbcr/tcr as it existed when translation began. | ||
HTCR | htcr | |
Cached copy of the htcr as it existed when translation began. | ||
HCR | hcr | |
Cached copy of the htcr as it existed when translation began. | ||
VTCR_t | vtcr | |
Cached copy of the vtcr as it existed when translation began. | ||
bool | isWrite | |
If the access is a write. | ||
bool | isFetch | |
If the access is a fetch (for execution, and no-exec) must be checked? | ||
bool | isSecure | |
If the access comes from the secure state. | ||
bool | secureLookup = false | |
Whether lookups should be treated as using the secure state. | ||
bool | isUncacheable | |
True if table walks are uncacheable (for table descriptors) | ||
std::optional< LongDescData > | longDescData | |
bool | hpd | |
Hierarchical access permission disable. | ||
uint8_t | sh | |
uint8_t | irgn | |
uint8_t | orgn | |
bool | stage2Req | |
Flag indicating if a second stage of lookup is required. | ||
BaseMMU::Translation * | stage2Tran | |
A pointer to the stage 2 translation that's in progress. | ||
bool | timing | |
If the mode is timing or atomic. | ||
bool | functional | |
If the atomic mode should be functional. | ||
BaseMMU::Mode | mode | |
Save mode for use in delayed response. | ||
MMU::ArmTranslationType | tranType | |
The translation type that has been requested. | ||
L1Descriptor | l1Desc | |
Short-format descriptors. | ||
L2Descriptor | l2Desc | |
LongDescriptor | longDesc | |
Long-format descriptor (LPAE and AArch64) | ||
bool | delayed | |
Whether the response is delayed in timing mode due to additional lookups. | ||
TableWalker * | tableWalker | |
Tick | startTime | |
Timestamp for calculating elapsed time in service (for stats) | ||
unsigned | levels | |
Page entries walked during service (for stats) | ||
Definition at line 820 of file table_walker.hh.
gem5::TableWalker::WalkerState::WalkerState | ( | ) |
Definition at line 127 of file table_walker.cc.
void gem5::ArmISA::TableWalker::WalkerState::doL1Descriptor | ( | ) |
void gem5::ArmISA::TableWalker::WalkerState::doL2Descriptor | ( | ) |
void gem5::ArmISA::TableWalker::WalkerState::doLongDescriptor | ( | ) |
|
inline |
Definition at line 963 of file table_walker.hh.
References gem5::Named::name(), and tableWalker.
union { ... } gem5::ArmISA::TableWalker::WalkerState |
Cached copy of ttbcr/tcr as it existed when translation began.
bool gem5::ArmISA::TableWalker::WalkerState::aarch64 |
If the access is performed in AArch64 state.
Definition at line 827 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doLongDescriptor(), gem5::ArmISA::TableWalker::LongDescriptor::global(), gem5::ArmISA::TableWalker::insertTableEntry(), gem5::ArmISA::TableWalker::processWalkAArch64(), and gem5::ArmISA::TableWalker::walk().
uint16_t gem5::ArmISA::TableWalker::WalkerState::asid |
ASID that we're servicing the request under.
Definition at line 845 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::insertPartialTableEntry(), gem5::ArmISA::TableWalker::insertTableEntry(), and gem5::ArmISA::TableWalker::walk().
CPSR gem5::ArmISA::TableWalker::WalkerState::cpsr |
Cached copy of the cpsr as it existed when translation began.
Definition at line 867 of file table_walker.hh.
bool gem5::ArmISA::TableWalker::WalkerState::delayed |
Whether the response is delayed in timing mode due to additional lookups.
Definition at line 946 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1Descriptor(), gem5::ArmISA::TableWalker::doL2DescriptorWrapper(), gem5::ArmISA::TableWalker::doLongDescriptor(), and gem5::ArmISA::TableWalker::doLongDescriptorWrapper().
ExceptionLevel gem5::ArmISA::TableWalker::WalkerState::el |
Current exception level.
Definition at line 830 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::processWalkLPAE(), gem5::ArmISA::TableWalker::testWalk(), and gem5::ArmISA::TableWalker::walk().
Fault gem5::ArmISA::TableWalker::WalkerState::fault |
The fault that we are going to return.
Definition at line 852 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1Descriptor(), gem5::ArmISA::TableWalker::doL2Descriptor(), gem5::ArmISA::TableWalker::doL2DescriptorWrapper(), gem5::ArmISA::TableWalker::doLongDescriptor(), gem5::ArmISA::TableWalker::doLongDescriptorWrapper(), gem5::ArmISA::TableWalker::fetchDescriptor(), gem5::ArmISA::TableWalker::processWalk(), gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::processWalkLPAE(), and gem5::ArmISA::TableWalker::walk().
bool gem5::ArmISA::TableWalker::WalkerState::functional |
If the atomic mode should be functional.
Definition at line 929 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::fetchDescriptor(), and gem5::ArmISA::TableWalker::walk().
HCR gem5::ArmISA::TableWalker::WalkerState::hcr |
Cached copy of the htcr as it existed when translation began.
Definition at line 880 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::uncacheableWalk(), and gem5::ArmISA::TableWalker::walk().
bool gem5::ArmISA::TableWalker::WalkerState::hpd |
Hierarchical access permission disable.
Definition at line 913 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doLongDescriptor(), and gem5::ArmISA::TableWalker::processWalkAArch64().
HTCR gem5::ArmISA::TableWalker::WalkerState::htcr |
Cached copy of the htcr as it existed when translation began.
Definition at line 877 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::processWalkLPAE(), and gem5::ArmISA::TableWalker::walk().
uint8_t gem5::ArmISA::TableWalker::WalkerState::irgn |
Definition at line 916 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::memAttrsWalkAArch64(), and gem5::ArmISA::TableWalker::processWalkAArch64().
bool gem5::ArmISA::TableWalker::WalkerState::isFetch |
If the access is a fetch (for execution, and no-exec) must be checked?
Definition at line 889 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1Descriptor(), gem5::ArmISA::TableWalker::doL2Descriptor(), gem5::ArmISA::TableWalker::insertTableEntry(), gem5::ArmISA::TableWalker::mpamTagTableWalk(), gem5::ArmISA::TableWalker::processWalk(), gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::processWalkLPAE(), and gem5::ArmISA::TableWalker::walk().
bool gem5::ArmISA::TableWalker::WalkerState::isSecure |
If the access comes from the secure state.
Definition at line 892 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1Descriptor(), gem5::ArmISA::TableWalker::LongDescriptor::global(), gem5::ArmISA::TableWalker::insertPartialTableEntry(), gem5::ArmISA::TableWalker::insertTableEntry(), gem5::ArmISA::TableWalker::memAttrs(), gem5::ArmISA::TableWalker::memAttrsLPAE(), gem5::ArmISA::TableWalker::processWalk(), gem5::ArmISA::TableWalker::processWalkLPAE(), gem5::ArmISA::TableWalker::testWalk(), and gem5::ArmISA::TableWalker::walk().
bool gem5::ArmISA::TableWalker::WalkerState::isUncacheable |
True if table walks are uncacheable (for table descriptors)
Definition at line 899 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1Descriptor(), gem5::ArmISA::TableWalker::doLongDescriptor(), gem5::ArmISA::TableWalker::processWalk(), gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::processWalkLPAE(), and gem5::ArmISA::TableWalker::uncacheableWalk().
bool gem5::ArmISA::TableWalker::WalkerState::isWrite |
If the access is a write.
Definition at line 886 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1Descriptor(), gem5::ArmISA::TableWalker::doL2Descriptor(), gem5::ArmISA::TableWalker::processWalk(), gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::processWalkLPAE(), and gem5::ArmISA::TableWalker::walk().
L1Descriptor gem5::ArmISA::TableWalker::WalkerState::l1Desc |
Short-format descriptors.
Definition at line 938 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1Descriptor(), gem5::ArmISA::TableWalker::doL2Descriptor(), and gem5::ArmISA::TableWalker::processWalk().
L2Descriptor gem5::ArmISA::TableWalker::WalkerState::l2Desc |
Definition at line 939 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1Descriptor(), and gem5::ArmISA::TableWalker::doL2Descriptor().
unsigned gem5::ArmISA::TableWalker::WalkerState::levels |
Page entries walked during service (for stats)
Definition at line 954 of file table_walker.hh.
LongDescriptor gem5::ArmISA::TableWalker::WalkerState::longDesc |
Long-format descriptor (LPAE and AArch64)
Definition at line 942 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doLongDescriptor(), gem5::ArmISA::TableWalker::doLongDescriptorWrapper(), gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::processWalkLPAE(), and gem5::ArmISA::TableWalker::walk().
std::optional<LongDescData> gem5::ArmISA::TableWalker::WalkerState::longDescData |
BaseMMU::Mode gem5::ArmISA::TableWalker::WalkerState::mode |
Save mode for use in delayed response.
Definition at line 932 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL2DescriptorWrapper(), gem5::ArmISA::TableWalker::doLongDescriptorWrapper(), gem5::ArmISA::TableWalker::fetchDescriptor(), gem5::ArmISA::TableWalker::insertTableEntry(), gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::testWalk(), and gem5::ArmISA::TableWalker::walk().
uint8_t gem5::ArmISA::TableWalker::WalkerState::orgn |
Definition at line 917 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::memAttrsWalkAArch64(), and gem5::ArmISA::TableWalker::processWalkAArch64().
int gem5::ArmISA::TableWalker::WalkerState::physAddrRange |
Current physical address range in bits.
Definition at line 836 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doLongDescriptor(), gem5::ArmISA::TableWalker::processWalkAArch64(), and gem5::ArmISA::TableWalker::walk().
TranslationRegime gem5::ArmISA::TableWalker::WalkerState::regime |
Current translation regime.
Definition at line 833 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::LongDescriptor::global(), gem5::ArmISA::TableWalker::insertPartialTableEntry(), gem5::ArmISA::TableWalker::insertTableEntry(), gem5::ArmISA::TableWalker::memAttrsAArch64(), gem5::ArmISA::TableWalker::processWalkAArch64(), and gem5::ArmISA::TableWalker::walk().
RequestPtr gem5::ArmISA::TableWalker::WalkerState::req |
Request that is currently being serviced.
Definition at line 839 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1Descriptor(), gem5::ArmISA::TableWalker::doL2Descriptor(), gem5::ArmISA::TableWalker::doL2DescriptorWrapper(), gem5::ArmISA::TableWalker::doLongDescriptor(), gem5::ArmISA::TableWalker::doLongDescriptorWrapper(), gem5::ArmISA::TableWalker::insertTableEntry(), gem5::ArmISA::TableWalker::processWalk(), gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::processWalkLPAE(), and gem5::ArmISA::TableWalker::walk().
SCR gem5::ArmISA::TableWalker::WalkerState::scr |
Cached copy of the scr as it existed when translation began.
Definition at line 864 of file table_walker.hh.
SCTLR gem5::ArmISA::TableWalker::WalkerState::sctlr |
Cached copy of the sctlr as it existed when translation began.
Definition at line 861 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1Descriptor(), gem5::ArmISA::TableWalker::doL2Descriptor(), gem5::ArmISA::TableWalker::doLongDescriptor(), gem5::ArmISA::TableWalker::insertTableEntry(), gem5::ArmISA::TableWalker::processWalk(), gem5::ArmISA::TableWalker::uncacheableWalk(), and gem5::ArmISA::TableWalker::walk().
bool gem5::ArmISA::TableWalker::WalkerState::secureLookup = false |
Whether lookups should be treated as using the secure state.
This is usually the same as isSecure, but can be set to false by the long descriptor table attributes.
Definition at line 896 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1Descriptor(), gem5::ArmISA::TableWalker::doLongDescriptor(), gem5::ArmISA::TableWalker::LongDescriptor::global(), gem5::ArmISA::TableWalker::processWalk(), gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::processWalkLPAE(), gem5::ArmISA::TableWalker::L1Descriptor::secure(), gem5::ArmISA::TableWalker::LongDescriptor::secure(), and gem5::ArmISA::TableWalker::walk().
uint8_t gem5::ArmISA::TableWalker::WalkerState::sh |
Definition at line 915 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::memAttrsWalkAArch64(), and gem5::ArmISA::TableWalker::processWalkAArch64().
bool gem5::ArmISA::TableWalker::WalkerState::stage2Req |
Flag indicating if a second stage of lookup is required.
Definition at line 920 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::fetchDescriptor(), and gem5::ArmISA::TableWalker::walk().
BaseMMU::Translation* gem5::ArmISA::TableWalker::WalkerState::stage2Tran |
A pointer to the stage 2 translation that's in progress.
Definition at line 923 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL2DescriptorWrapper(), gem5::ArmISA::TableWalker::doLongDescriptorWrapper(), and gem5::ArmISA::TableWalker::fetchDescriptor().
Tick gem5::ArmISA::TableWalker::WalkerState::startTime |
Timestamp for calculating elapsed time in service (for stats)
Definition at line 951 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL2DescriptorWrapper(), gem5::ArmISA::TableWalker::doLongDescriptorWrapper(), gem5::ArmISA::TableWalker::processWalk(), gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::processWalkLPAE(), and gem5::ArmISA::TableWalker::walk().
TableWalker* gem5::ArmISA::TableWalker::WalkerState::tableWalker |
Definition at line 948 of file table_walker.hh.
Referenced by name(), and gem5::ArmISA::TableWalker::walk().
ThreadContext* gem5::ArmISA::TableWalker::WalkerState::tc |
Thread context that we're doing the walk for.
Definition at line 824 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::checkVAddrSizeFaultAArch64(), gem5::ArmISA::TableWalker::doL1Descriptor(), gem5::ArmISA::TableWalker::doL2Descriptor(), gem5::ArmISA::TableWalker::doL2DescriptorWrapper(), gem5::ArmISA::TableWalker::doLongDescriptor(), gem5::ArmISA::TableWalker::doLongDescriptorWrapper(), gem5::ArmISA::TableWalker::fetchDescriptor(), gem5::ArmISA::TableWalker::insertTableEntry(), gem5::ArmISA::TableWalker::memAttrs(), gem5::ArmISA::TableWalker::memAttrsLPAE(), gem5::ArmISA::TableWalker::mpamTagTableWalk(), gem5::ArmISA::TableWalker::processWalk(), gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::processWalkLPAE(), and gem5::ArmISA::TableWalker::walk().
TCR gem5::ArmISA::TableWalker::WalkerState::tcr |
Definition at line 873 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::processWalkAArch64(), and gem5::ArmISA::TableWalker::walk().
bool gem5::ArmISA::TableWalker::WalkerState::timing |
If the mode is timing or atomic.
Definition at line 926 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1Descriptor(), gem5::ArmISA::TableWalker::doL2Descriptor(), gem5::ArmISA::TableWalker::doLongDescriptor(), gem5::ArmISA::TableWalker::fetchDescriptor(), gem5::ArmISA::TableWalker::insertTableEntry(), and gem5::ArmISA::TableWalker::walk().
BaseMMU::Translation* gem5::ArmISA::TableWalker::WalkerState::transState |
Translation state for delayed requests.
Definition at line 849 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL2DescriptorWrapper(), gem5::ArmISA::TableWalker::doLongDescriptorWrapper(), and gem5::ArmISA::TableWalker::walk().
MMU::ArmTranslationType gem5::ArmISA::TableWalker::WalkerState::tranType |
The translation type that has been requested.
Definition at line 935 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL2DescriptorWrapper(), gem5::ArmISA::TableWalker::doLongDescriptorWrapper(), gem5::ArmISA::TableWalker::fetchDescriptor(), and gem5::ArmISA::TableWalker::walk().
TTBCR gem5::ArmISA::TableWalker::WalkerState::ttbcr |
Definition at line 872 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::processWalk(), gem5::ArmISA::TableWalker::processWalkLPAE(), and gem5::ArmISA::TableWalker::walk().
Addr gem5::ArmISA::TableWalker::WalkerState::vaddr |
The virtual address that is being translated with tagging removed.
Definition at line 855 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::checkVAddrSizeFaultAArch64(), gem5::ArmISA::TableWalker::doL1Descriptor(), gem5::ArmISA::TableWalker::doLongDescriptor(), gem5::ArmISA::TableWalker::fetchDescriptor(), gem5::ArmISA::TableWalker::insertPartialTableEntry(), gem5::ArmISA::TableWalker::insertTableEntry(), gem5::ArmISA::TableWalker::processWalk(), gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::processWalkLPAE(), gem5::ArmISA::TableWalker::testWalk(), gem5::ArmISA::TableWalker::walk(), and gem5::ArmISA::TableWalker::walkAddresses().
Addr gem5::ArmISA::TableWalker::WalkerState::vaddr_tainted |
The virtual address that is being translated.
Definition at line 858 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1Descriptor(), gem5::ArmISA::TableWalker::doL2Descriptor(), gem5::ArmISA::TableWalker::doL2DescriptorWrapper(), gem5::ArmISA::TableWalker::doLongDescriptor(), gem5::ArmISA::TableWalker::doLongDescriptorWrapper(), gem5::ArmISA::TableWalker::processWalk(), gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::processWalkLPAE(), and gem5::ArmISA::TableWalker::walk().
vmid_t gem5::ArmISA::TableWalker::WalkerState::vmid |
Definition at line 846 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::insertPartialTableEntry(), gem5::ArmISA::TableWalker::insertTableEntry(), and gem5::ArmISA::TableWalker::walk().
VTCR_t gem5::ArmISA::TableWalker::WalkerState::vtcr |
Cached copy of the vtcr as it existed when translation began.
Definition at line 883 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::processWalkLPAE(), gem5::ArmISA::TableWalker::walk(), and gem5::ArmISA::TableWalker::walkAddresses().
TlbEntry gem5::ArmISA::TableWalker::WalkerState::walkEntry |
Initial walk entry allowing to skip lookup levels.
Definition at line 842 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::walk(), and gem5::ArmISA::TableWalker::walkAddresses().