|
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 |