gem5
v22.1.0.0
|
#include <table_walker.hh>
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. More... | |
bool | aarch64 |
If the access is performed in AArch64 state. More... | |
ExceptionLevel | el |
Current exception level. More... | |
int | physAddrRange |
Current physical address range in bits. More... | |
RequestPtr | req |
Request that is currently being serviced. More... | |
TlbEntry | walkEntry |
Initial walk entry allowing to skip lookup levels. More... | |
uint16_t | asid |
ASID that we're servicing the request under. More... | |
vmid_t | vmid |
bool | isHyp |
BaseMMU::Translation * | transState |
Translation state for delayed requests. More... | |
Fault | fault |
The fault that we are going to return. More... | |
Addr | vaddr |
The virtual address that is being translated with tagging removed. More... | |
Addr | vaddr_tainted |
The virtual address that is being translated. More... | |
SCTLR | sctlr |
Cached copy of the sctlr as it existed when translation began. More... | |
SCR | scr |
Cached copy of the scr as it existed when translation began. More... | |
CPSR | cpsr |
Cached copy of the cpsr as it existed when translation began. More... | |
union { | |
TTBCR ttbcr | |
TCR tcr | |
}; | |
Cached copy of ttbcr/tcr as it existed when translation began. More... | |
HTCR | htcr |
Cached copy of the htcr as it existed when translation began. More... | |
HCR | hcr |
Cached copy of the htcr as it existed when translation began. More... | |
VTCR_t | vtcr |
Cached copy of the vtcr as it existed when translation began. More... | |
bool | isWrite |
If the access is a write. More... | |
bool | isFetch |
If the access is a fetch (for execution, and no-exec) must be checked? More... | |
bool | isSecure |
If the access comes from the secure state. More... | |
bool | isUncacheable |
True if table walks are uncacheable (for table descriptors) More... | |
bool | secureLookup |
Helper variables used to implement hierarchical access permissions when the long-desc. More... | |
bool | rwTable |
bool | userTable |
bool | xnTable |
bool | pxnTable |
bool | hpd |
Hierarchical access permission disable. More... | |
bool | stage2Req |
Flag indicating if a second stage of lookup is required. More... | |
BaseMMU::Translation * | stage2Tran |
A pointer to the stage 2 translation that's in progress. More... | |
bool | timing |
If the mode is timing or atomic. More... | |
bool | functional |
If the atomic mode should be functional. More... | |
BaseMMU::Mode | mode |
Save mode for use in delayed response. More... | |
MMU::ArmTranslationType | tranType |
The translation type that has been requested. More... | |
L1Descriptor | l1Desc |
Short-format descriptors. More... | |
L2Descriptor | l2Desc |
LongDescriptor | longDesc |
Long-format descriptor (LPAE and AArch64) More... | |
bool | delayed |
Whether the response is delayed in timing mode due to additional lookups. More... | |
TableWalker * | tableWalker |
Tick | startTime |
Timestamp for calculating elapsed time in service (for stats) More... | |
unsigned | levels |
Page entries walked during service (for stats) More... | |
Definition at line 801 of file table_walker.hh.
gem5::TableWalker::WalkerState::WalkerState | ( | ) |
Definition at line 125 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 931 of file table_walker.hh.
References gem5::Named::name(), and tableWalker.
union { ... } |
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 808 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doLongDescriptor(), gem5::ArmISA::TableWalker::LongDescriptor::global(), gem5::ArmISA::TableWalker::insertPartialTableEntry(), gem5::ArmISA::TableWalker::insertTableEntry(), gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::processWalkWrapper(), and gem5::ArmISA::TableWalker::walk().
uint16_t gem5::ArmISA::TableWalker::WalkerState::asid |
ASID that we're servicing the request under.
Definition at line 823 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::insertPartialTableEntry(), gem5::ArmISA::TableWalker::insertTableEntry(), gem5::ArmISA::TableWalker::processWalkWrapper(), 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 846 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 914 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1Descriptor(), gem5::ArmISA::TableWalker::doL1DescriptorWrapper(), 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 811 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(), gem5::ArmISA::TableWalker::processWalkWrapper(), and gem5::ArmISA::TableWalker::walk().
Fault gem5::ArmISA::TableWalker::WalkerState::fault |
The fault that we are going to return.
Definition at line 831 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1Descriptor(), gem5::ArmISA::TableWalker::doL1DescriptorWrapper(), 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 897 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 859 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::LongDescriptor::global(), gem5::ArmISA::TableWalker::insertPartialTableEntry(), gem5::ArmISA::TableWalker::processWalkAArch64(), and gem5::ArmISA::TableWalker::walk().
bool gem5::ArmISA::TableWalker::WalkerState::hpd |
Hierarchical access permission disable.
Definition at line 885 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 856 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::processWalkLPAE(), and gem5::ArmISA::TableWalker::walk().
bool gem5::ArmISA::TableWalker::WalkerState::isFetch |
If the access is a fetch (for execution, and no-exec) must be checked?
Definition at line 868 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1Descriptor(), gem5::ArmISA::TableWalker::doL2Descriptor(), gem5::ArmISA::TableWalker::generateLongDescFault(), gem5::ArmISA::TableWalker::insertTableEntry(), gem5::ArmISA::TableWalker::processWalk(), gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::processWalkLPAE(), and gem5::ArmISA::TableWalker::walk().
bool gem5::ArmISA::TableWalker::WalkerState::isHyp |
bool gem5::ArmISA::TableWalker::WalkerState::isSecure |
If the access comes from the secure state.
Definition at line 871 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::processWalkAArch64(), gem5::ArmISA::TableWalker::processWalkLPAE(), gem5::ArmISA::TableWalker::processWalkWrapper(), 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 874 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1Descriptor(), gem5::ArmISA::TableWalker::doLongDescriptor(), gem5::ArmISA::TableWalker::processWalk(), gem5::ArmISA::TableWalker::processWalkAArch64(), and gem5::ArmISA::TableWalker::processWalkLPAE().
bool gem5::ArmISA::TableWalker::WalkerState::isWrite |
If the access is a write.
Definition at line 865 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1Descriptor(), gem5::ArmISA::TableWalker::doL2Descriptor(), gem5::ArmISA::TableWalker::generateLongDescFault(), 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 906 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1Descriptor(), gem5::ArmISA::TableWalker::doL1DescriptorWrapper(), gem5::ArmISA::TableWalker::doL2Descriptor(), and gem5::ArmISA::TableWalker::processWalk().
L2Descriptor gem5::ArmISA::TableWalker::WalkerState::l2Desc |
Definition at line 907 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 922 of file table_walker.hh.
LongDescriptor gem5::ArmISA::TableWalker::WalkerState::longDesc |
Long-format descriptor (LPAE and AArch64)
Definition at line 910 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doLongDescriptor(), gem5::ArmISA::TableWalker::doLongDescriptorWrapper(), gem5::ArmISA::TableWalker::generateLongDescFault(), gem5::ArmISA::TableWalker::processWalkAArch64(), and gem5::ArmISA::TableWalker::processWalkLPAE().
BaseMMU::Mode gem5::ArmISA::TableWalker::WalkerState::mode |
Save mode for use in delayed response.
Definition at line 900 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1DescriptorWrapper(), gem5::ArmISA::TableWalker::doL2DescriptorWrapper(), gem5::ArmISA::TableWalker::doLongDescriptorWrapper(), gem5::ArmISA::TableWalker::fetchDescriptor(), gem5::ArmISA::TableWalker::insertTableEntry(), gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::processWalkWrapper(), gem5::ArmISA::TableWalker::testWalk(), and gem5::ArmISA::TableWalker::walk().
int gem5::ArmISA::TableWalker::WalkerState::physAddrRange |
Current physical address range in bits.
Definition at line 814 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doLongDescriptor(), gem5::ArmISA::TableWalker::processWalkAArch64(), and gem5::ArmISA::TableWalker::walk().
bool gem5::ArmISA::TableWalker::WalkerState::pxnTable |
RequestPtr gem5::ArmISA::TableWalker::WalkerState::req |
Request that is currently being serviced.
Definition at line 817 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1Descriptor(), gem5::ArmISA::TableWalker::doL1DescriptorWrapper(), gem5::ArmISA::TableWalker::doL2Descriptor(), gem5::ArmISA::TableWalker::doL2DescriptorWrapper(), gem5::ArmISA::TableWalker::doLongDescriptor(), gem5::ArmISA::TableWalker::doLongDescriptorWrapper(), gem5::ArmISA::TableWalker::generateLongDescFault(), gem5::ArmISA::TableWalker::insertTableEntry(), gem5::ArmISA::TableWalker::processWalk(), gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::processWalkLPAE(), gem5::ArmISA::TableWalker::processWalkWrapper(), and gem5::ArmISA::TableWalker::walk().
bool gem5::ArmISA::TableWalker::WalkerState::rwTable |
SCR gem5::ArmISA::TableWalker::WalkerState::scr |
Cached copy of the scr as it existed when translation began.
Definition at line 843 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 840 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::processWalkAArch64(), gem5::ArmISA::TableWalker::processWalkLPAE(), and gem5::ArmISA::TableWalker::walk().
bool gem5::ArmISA::TableWalker::WalkerState::secureLookup |
Helper variables used to implement hierarchical access permissions when the long-desc.
format is used (LPAE only)
Definition at line 878 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doLongDescriptor(), gem5::ArmISA::TableWalker::LongDescriptor::global(), gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::L1Descriptor::secure(), gem5::ArmISA::TableWalker::LongDescriptor::secure(), and gem5::ArmISA::TableWalker::walk().
bool gem5::ArmISA::TableWalker::WalkerState::stage2Req |
Flag indicating if a second stage of lookup is required.
Definition at line 888 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 891 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1DescriptorWrapper(), 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 919 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1DescriptorWrapper(), gem5::ArmISA::TableWalker::doL2DescriptorWrapper(), gem5::ArmISA::TableWalker::doLongDescriptorWrapper(), gem5::ArmISA::TableWalker::processWalk(), gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::processWalkLPAE(), gem5::ArmISA::TableWalker::processWalkWrapper(), and gem5::ArmISA::TableWalker::walk().
TableWalker* gem5::ArmISA::TableWalker::WalkerState::tableWalker |
Definition at line 916 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 805 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::checkVAddrSizeFaultAArch64(), gem5::ArmISA::TableWalker::doL1Descriptor(), gem5::ArmISA::TableWalker::doL1DescriptorWrapper(), 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::processWalk(), gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::processWalkLPAE(), gem5::ArmISA::TableWalker::processWalkWrapper(), and gem5::ArmISA::TableWalker::walk().
TCR gem5::ArmISA::TableWalker::WalkerState::tcr |
Definition at line 852 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 894 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(), gem5::ArmISA::TableWalker::processWalk(), gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::processWalkLPAE(), and gem5::ArmISA::TableWalker::walk().
BaseMMU::Translation* gem5::ArmISA::TableWalker::WalkerState::transState |
Translation state for delayed requests.
Definition at line 828 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1DescriptorWrapper(), gem5::ArmISA::TableWalker::doL2DescriptorWrapper(), gem5::ArmISA::TableWalker::doLongDescriptorWrapper(), gem5::ArmISA::TableWalker::processWalkWrapper(), and gem5::ArmISA::TableWalker::walk().
MMU::ArmTranslationType gem5::ArmISA::TableWalker::WalkerState::tranType |
The translation type that has been requested.
Definition at line 903 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1DescriptorWrapper(), gem5::ArmISA::TableWalker::doL2DescriptorWrapper(), gem5::ArmISA::TableWalker::doLongDescriptorWrapper(), gem5::ArmISA::TableWalker::fetchDescriptor(), gem5::ArmISA::TableWalker::processWalkWrapper(), and gem5::ArmISA::TableWalker::walk().
TTBCR gem5::ArmISA::TableWalker::WalkerState::ttbcr |
Definition at line 851 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::processWalk(), gem5::ArmISA::TableWalker::processWalkLPAE(), and gem5::ArmISA::TableWalker::walk().
bool gem5::ArmISA::TableWalker::WalkerState::userTable |
Addr gem5::ArmISA::TableWalker::WalkerState::vaddr |
The virtual address that is being translated with tagging removed.
Definition at line 834 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::processWalkWrapper(), 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 837 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::doL1Descriptor(), gem5::ArmISA::TableWalker::doL1DescriptorWrapper(), gem5::ArmISA::TableWalker::doL2Descriptor(), gem5::ArmISA::TableWalker::doL2DescriptorWrapper(), gem5::ArmISA::TableWalker::doLongDescriptor(), gem5::ArmISA::TableWalker::doLongDescriptorWrapper(), gem5::ArmISA::TableWalker::generateLongDescFault(), gem5::ArmISA::TableWalker::processWalk(), gem5::ArmISA::TableWalker::processWalkAArch64(), gem5::ArmISA::TableWalker::processWalkLPAE(), gem5::ArmISA::TableWalker::processWalkWrapper(), and gem5::ArmISA::TableWalker::walk().
vmid_t gem5::ArmISA::TableWalker::WalkerState::vmid |
Definition at line 824 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::insertPartialTableEntry(), gem5::ArmISA::TableWalker::insertTableEntry(), gem5::ArmISA::TableWalker::processWalkWrapper(), 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 862 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 820 of file table_walker.hh.
Referenced by gem5::ArmISA::TableWalker::processWalkWrapper(), gem5::ArmISA::TableWalker::walk(), and gem5::ArmISA::TableWalker::walkAddresses().
bool gem5::ArmISA::TableWalker::WalkerState::xnTable |