gem5
v20.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... | |
uint16_t | asid |
ASID that we're servicing the request under. More... | |
uint8_t | vmid |
bool | isHyp |
TLB::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... | |
TLB::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... | |
BaseTLB::Mode | mode |
Save mode for use in delayed response. More... | |
TLB::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 688 of file table_walker.hh.
TableWalker::WalkerState::WalkerState | ( | ) |
Definition at line 128 of file table_walker.cc.
void ArmISA::TableWalker::WalkerState::doL1Descriptor | ( | ) |
void ArmISA::TableWalker::WalkerState::doL2Descriptor | ( | ) |
void ArmISA::TableWalker::WalkerState::doLongDescriptor | ( | ) |
|
inline |
Definition at line 814 of file table_walker.hh.
References SimObject::name(), and tableWalker.
union { ... } |
Cached copy of ttbcr/tcr as it existed when translation began.
bool ArmISA::TableWalker::WalkerState::aarch64 |
If the access is performed in AArch64 state.
Definition at line 695 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doLongDescriptor(), ArmISA::TableWalker::LongDescriptor::global(), ArmISA::TableWalker::insertTableEntry(), ArmISA::TableWalker::processWalkAArch64(), ArmISA::TableWalker::processWalkWrapper(), and ArmISA::TableWalker::walk().
uint16_t ArmISA::TableWalker::WalkerState::asid |
ASID that we're servicing the request under.
Definition at line 707 of file table_walker.hh.
Referenced by ArmISA::TableWalker::insertTableEntry(), ArmISA::TableWalker::processWalkWrapper(), and ArmISA::TableWalker::walk().
CPSR ArmISA::TableWalker::WalkerState::cpsr |
Cached copy of the cpsr as it existed when translation began.
Definition at line 730 of file table_walker.hh.
bool ArmISA::TableWalker::WalkerState::delayed |
Whether the response is delayed in timing mode due to additional lookups.
Definition at line 797 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doL1Descriptor(), ArmISA::TableWalker::doL1DescriptorWrapper(), ArmISA::TableWalker::doL2DescriptorWrapper(), ArmISA::TableWalker::doLongDescriptor(), and ArmISA::TableWalker::doLongDescriptorWrapper().
ExceptionLevel ArmISA::TableWalker::WalkerState::el |
Current exception level.
Definition at line 698 of file table_walker.hh.
Referenced by ArmISA::TableWalker::LongDescriptor::global(), ArmISA::TableWalker::insertTableEntry(), ArmISA::TableWalker::memAttrsAArch64(), ArmISA::TableWalker::processWalkAArch64(), ArmISA::TableWalker::processWalkWrapper(), and ArmISA::TableWalker::walk().
Fault ArmISA::TableWalker::WalkerState::fault |
The fault that we are going to return.
Definition at line 715 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doL1Descriptor(), ArmISA::TableWalker::doL1DescriptorWrapper(), ArmISA::TableWalker::doL2Descriptor(), ArmISA::TableWalker::doL2DescriptorWrapper(), ArmISA::TableWalker::doLongDescriptor(), ArmISA::TableWalker::doLongDescriptorWrapper(), ArmISA::TableWalker::fetchDescriptor(), ArmISA::TableWalker::processWalk(), ArmISA::TableWalker::processWalkLPAE(), and ArmISA::TableWalker::walk().
bool ArmISA::TableWalker::WalkerState::functional |
If the atomic mode should be functional.
Definition at line 780 of file table_walker.hh.
Referenced by ArmISA::TableWalker::fetchDescriptor(), and ArmISA::TableWalker::walk().
HCR ArmISA::TableWalker::WalkerState::hcr |
Cached copy of the htcr as it existed when translation began.
Definition at line 742 of file table_walker.hh.
Referenced by ArmISA::TableWalker::processWalkAArch64(), and ArmISA::TableWalker::walk().
bool ArmISA::TableWalker::WalkerState::hpd |
Hierarchical access permission disable.
Definition at line 768 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doLongDescriptor(), and ArmISA::TableWalker::processWalkAArch64().
HTCR ArmISA::TableWalker::WalkerState::htcr |
Cached copy of the htcr as it existed when translation began.
Definition at line 739 of file table_walker.hh.
Referenced by ArmISA::TableWalker::processWalkLPAE(), and ArmISA::TableWalker::walk().
bool ArmISA::TableWalker::WalkerState::isFetch |
If the access is a fetch (for execution, and no-exec) must be checked?
Definition at line 751 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doL1Descriptor(), ArmISA::TableWalker::doL2Descriptor(), ArmISA::TableWalker::generateLongDescFault(), ArmISA::TableWalker::insertTableEntry(), ArmISA::TableWalker::processWalk(), ArmISA::TableWalker::processWalkLPAE(), and ArmISA::TableWalker::walk().
bool ArmISA::TableWalker::WalkerState::isHyp |
Definition at line 709 of file table_walker.hh.
Referenced by ArmISA::TableWalker::insertTableEntry(), ArmISA::TableWalker::processWalkLPAE(), ArmISA::TableWalker::processWalkWrapper(), and ArmISA::TableWalker::walk().
bool ArmISA::TableWalker::WalkerState::isSecure |
If the access comes from the secure state.
Definition at line 754 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doL1Descriptor(), ArmISA::TableWalker::LongDescriptor::global(), ArmISA::TableWalker::insertTableEntry(), ArmISA::TableWalker::memAttrs(), ArmISA::TableWalker::memAttrsLPAE(), ArmISA::TableWalker::processWalk(), ArmISA::TableWalker::processWalkLPAE(), ArmISA::TableWalker::processWalkWrapper(), ArmISA::TableWalker::testWalk(), and ArmISA::TableWalker::walk().
bool ArmISA::TableWalker::WalkerState::isUncacheable |
True if table walks are uncacheable (for table descriptors)
Definition at line 757 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doL1Descriptor(), ArmISA::TableWalker::doLongDescriptor(), ArmISA::TableWalker::processWalk(), ArmISA::TableWalker::processWalkAArch64(), and ArmISA::TableWalker::processWalkLPAE().
bool ArmISA::TableWalker::WalkerState::isWrite |
If the access is a write.
Definition at line 748 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doL1Descriptor(), ArmISA::TableWalker::doL2Descriptor(), ArmISA::TableWalker::generateLongDescFault(), ArmISA::TableWalker::processWalk(), ArmISA::TableWalker::processWalkLPAE(), and ArmISA::TableWalker::walk().
L1Descriptor ArmISA::TableWalker::WalkerState::l1Desc |
Short-format descriptors.
Definition at line 789 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doL1Descriptor(), ArmISA::TableWalker::doL1DescriptorWrapper(), ArmISA::TableWalker::doL2Descriptor(), and ArmISA::TableWalker::processWalk().
L2Descriptor ArmISA::TableWalker::WalkerState::l2Desc |
Definition at line 790 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doL1Descriptor(), and ArmISA::TableWalker::doL2Descriptor().
unsigned ArmISA::TableWalker::WalkerState::levels |
Page entries walked during service (for stats)
Definition at line 805 of file table_walker.hh.
LongDescriptor ArmISA::TableWalker::WalkerState::longDesc |
Long-format descriptor (LPAE and AArch64)
Definition at line 793 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doLongDescriptor(), ArmISA::TableWalker::doLongDescriptorWrapper(), ArmISA::TableWalker::generateLongDescFault(), and ArmISA::TableWalker::processWalkLPAE().
BaseTLB::Mode ArmISA::TableWalker::WalkerState::mode |
Save mode for use in delayed response.
Definition at line 783 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doL1DescriptorWrapper(), ArmISA::TableWalker::doL2DescriptorWrapper(), ArmISA::TableWalker::doLongDescriptorWrapper(), ArmISA::TableWalker::processWalkWrapper(), ArmISA::TableWalker::testWalk(), and ArmISA::TableWalker::walk().
int ArmISA::TableWalker::WalkerState::physAddrRange |
Current physical address range in bits.
Definition at line 701 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doLongDescriptor(), and ArmISA::TableWalker::walk().
bool ArmISA::TableWalker::WalkerState::pxnTable |
Definition at line 765 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doLongDescriptor(), ArmISA::TableWalker::insertTableEntry(), and ArmISA::TableWalker::walk().
RequestPtr ArmISA::TableWalker::WalkerState::req |
Request that is currently being serviced.
Definition at line 704 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doL1Descriptor(), ArmISA::TableWalker::doL1DescriptorWrapper(), ArmISA::TableWalker::doL2Descriptor(), ArmISA::TableWalker::doL2DescriptorWrapper(), ArmISA::TableWalker::doLongDescriptor(), ArmISA::TableWalker::doLongDescriptorWrapper(), ArmISA::TableWalker::generateLongDescFault(), ArmISA::TableWalker::insertTableEntry(), ArmISA::TableWalker::processWalk(), ArmISA::TableWalker::processWalkLPAE(), ArmISA::TableWalker::processWalkWrapper(), and ArmISA::TableWalker::walk().
bool ArmISA::TableWalker::WalkerState::rwTable |
Definition at line 762 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doLongDescriptor(), ArmISA::TableWalker::insertTableEntry(), and ArmISA::TableWalker::walk().
SCR ArmISA::TableWalker::WalkerState::scr |
Cached copy of the scr as it existed when translation began.
Definition at line 727 of file table_walker.hh.
SCTLR ArmISA::TableWalker::WalkerState::sctlr |
Cached copy of the sctlr as it existed when translation began.
Definition at line 724 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doL1Descriptor(), ArmISA::TableWalker::doL2Descriptor(), ArmISA::TableWalker::doLongDescriptor(), ArmISA::TableWalker::insertTableEntry(), ArmISA::TableWalker::processWalk(), ArmISA::TableWalker::processWalkLPAE(), and ArmISA::TableWalker::walk().
bool ArmISA::TableWalker::WalkerState::secureLookup |
Helper variables used to implement hierarchical access permissions when the long-desc.
format is used (LPAE only)
Definition at line 761 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doLongDescriptor(), ArmISA::TableWalker::LongDescriptor::global(), ArmISA::TableWalker::processWalkAArch64(), ArmISA::TableWalker::L1Descriptor::secure(), ArmISA::TableWalker::LongDescriptor::secure(), and ArmISA::TableWalker::walk().
bool ArmISA::TableWalker::WalkerState::stage2Req |
Flag indicating if a second stage of lookup is required.
Definition at line 771 of file table_walker.hh.
Referenced by ArmISA::TableWalker::fetchDescriptor(), and ArmISA::TableWalker::walk().
TLB::Translation* ArmISA::TableWalker::WalkerState::stage2Tran |
A pointer to the stage 2 translation that's in progress.
Definition at line 774 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doL1DescriptorWrapper(), ArmISA::TableWalker::doL2DescriptorWrapper(), ArmISA::TableWalker::doLongDescriptorWrapper(), and ArmISA::TableWalker::fetchDescriptor().
Tick ArmISA::TableWalker::WalkerState::startTime |
Timestamp for calculating elapsed time in service (for stats)
Definition at line 802 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doL1DescriptorWrapper(), ArmISA::TableWalker::doL2DescriptorWrapper(), ArmISA::TableWalker::doLongDescriptorWrapper(), ArmISA::TableWalker::processWalk(), ArmISA::TableWalker::processWalkAArch64(), ArmISA::TableWalker::processWalkLPAE(), ArmISA::TableWalker::processWalkWrapper(), and ArmISA::TableWalker::walk().
TableWalker* ArmISA::TableWalker::WalkerState::tableWalker |
Definition at line 799 of file table_walker.hh.
Referenced by name(), and ArmISA::TableWalker::walk().
ThreadContext* ArmISA::TableWalker::WalkerState::tc |
Thread context that we're doing the walk for.
Definition at line 692 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doL1Descriptor(), ArmISA::TableWalker::doL1DescriptorWrapper(), ArmISA::TableWalker::doL2Descriptor(), ArmISA::TableWalker::doL2DescriptorWrapper(), ArmISA::TableWalker::doLongDescriptor(), ArmISA::TableWalker::doLongDescriptorWrapper(), ArmISA::TableWalker::fetchDescriptor(), ArmISA::TableWalker::insertTableEntry(), ArmISA::TableWalker::memAttrs(), ArmISA::TableWalker::memAttrsLPAE(), ArmISA::TableWalker::processWalk(), ArmISA::TableWalker::processWalkAArch64(), ArmISA::TableWalker::processWalkLPAE(), ArmISA::TableWalker::processWalkWrapper(), and ArmISA::TableWalker::walk().
TCR ArmISA::TableWalker::WalkerState::tcr |
Definition at line 735 of file table_walker.hh.
Referenced by ArmISA::TableWalker::processWalkAArch64(), and ArmISA::TableWalker::walk().
bool ArmISA::TableWalker::WalkerState::timing |
If the mode is timing or atomic.
Definition at line 777 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doL1Descriptor(), ArmISA::TableWalker::doL2Descriptor(), ArmISA::TableWalker::doLongDescriptor(), ArmISA::TableWalker::fetchDescriptor(), ArmISA::TableWalker::insertTableEntry(), ArmISA::TableWalker::processWalk(), ArmISA::TableWalker::processWalkLPAE(), and ArmISA::TableWalker::walk().
TLB::Translation* ArmISA::TableWalker::WalkerState::transState |
Translation state for delayed requests.
Definition at line 712 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doL1DescriptorWrapper(), ArmISA::TableWalker::doL2DescriptorWrapper(), ArmISA::TableWalker::doLongDescriptorWrapper(), ArmISA::TableWalker::processWalkWrapper(), and ArmISA::TableWalker::walk().
TLB::ArmTranslationType ArmISA::TableWalker::WalkerState::tranType |
The translation type that has been requested.
Definition at line 786 of file table_walker.hh.
Referenced by ArmISA::TableWalker::walk().
TTBCR ArmISA::TableWalker::WalkerState::ttbcr |
Definition at line 734 of file table_walker.hh.
Referenced by ArmISA::TableWalker::processWalk(), ArmISA::TableWalker::processWalkLPAE(), and ArmISA::TableWalker::walk().
bool ArmISA::TableWalker::WalkerState::userTable |
Definition at line 763 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doLongDescriptor(), ArmISA::TableWalker::insertTableEntry(), and ArmISA::TableWalker::walk().
Addr ArmISA::TableWalker::WalkerState::vaddr |
The virtual address that is being translated with tagging removed.
Definition at line 718 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doL1Descriptor(), ArmISA::TableWalker::doLongDescriptor(), ArmISA::TableWalker::fetchDescriptor(), ArmISA::TableWalker::insertTableEntry(), ArmISA::TableWalker::processWalk(), ArmISA::TableWalker::processWalkAArch64(), ArmISA::TableWalker::processWalkLPAE(), ArmISA::TableWalker::processWalkWrapper(), ArmISA::TableWalker::testWalk(), and ArmISA::TableWalker::walk().
Addr ArmISA::TableWalker::WalkerState::vaddr_tainted |
The virtual address that is being translated.
Definition at line 721 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doL1Descriptor(), ArmISA::TableWalker::doL1DescriptorWrapper(), ArmISA::TableWalker::doL2Descriptor(), ArmISA::TableWalker::doL2DescriptorWrapper(), ArmISA::TableWalker::doLongDescriptor(), ArmISA::TableWalker::doLongDescriptorWrapper(), ArmISA::TableWalker::generateLongDescFault(), ArmISA::TableWalker::processWalk(), ArmISA::TableWalker::processWalkAArch64(), ArmISA::TableWalker::processWalkLPAE(), ArmISA::TableWalker::processWalkWrapper(), and ArmISA::TableWalker::walk().
uint8_t ArmISA::TableWalker::WalkerState::vmid |
Definition at line 708 of file table_walker.hh.
Referenced by ArmISA::TableWalker::insertTableEntry(), ArmISA::TableWalker::processWalkWrapper(), and ArmISA::TableWalker::walk().
VTCR_t ArmISA::TableWalker::WalkerState::vtcr |
Cached copy of the vtcr as it existed when translation began.
Definition at line 745 of file table_walker.hh.
Referenced by ArmISA::TableWalker::processWalkAArch64(), ArmISA::TableWalker::processWalkLPAE(), and ArmISA::TableWalker::walk().
bool ArmISA::TableWalker::WalkerState::xnTable |
Definition at line 764 of file table_walker.hh.
Referenced by ArmISA::TableWalker::doLongDescriptor(), ArmISA::TableWalker::insertTableEntry(), and ArmISA::TableWalker::walk().