|
gem5
v19.0.0.0
|
#include <table_walker.hh>
Classes | |
| class | DescriptorBase |
| class | L1Descriptor |
| class | L2Descriptor |
| Level 2 page table descriptor. More... | |
| class | LongDescriptor |
| Long-descriptor format (LPAE) More... | |
| class | WalkerState |
Public Types | |
| enum | GrainSize { Grain4KB = 12, Grain16KB = 14, Grain64KB = 16, ReservedGrain = 0 } |
| typedef ArmTableWalkerParams | Params |
Public Types inherited from ClockedObject | |
| typedef ClockedObjectParams | Params |
| Parameters of ClockedObject. More... | |
Public Types inherited from SimObject | |
| typedef SimObjectParams | Params |
Public Member Functions | |
| TableWalker (const Params *p) | |
| virtual | ~TableWalker () |
| const Params * | params () const |
| void | init () override |
| init() is called after all C++ SimObjects have been created and all ports are connected. More... | |
| bool | haveLPAE () const |
| bool | haveVirtualization () const |
| bool | haveLargeAsid64 () const |
| void | completeDrain () |
| Checks if all state is cleared and if so, completes drain. More... | |
| DrainState | drain () override |
| Notify an object that it needs to drain its state. More... | |
| void | drainResume () override |
| Resume execution after a successful drain. More... | |
| Port & | getPort (const std::string &if_name, PortID idx=InvalidPortID) override |
| Get a port with a given name and index. More... | |
| void | regStats () override |
| Callback to set stat parameters. More... | |
| Fault | walk (const RequestPtr &req, ThreadContext *tc, uint16_t asid, uint8_t _vmid, bool _isHyp, TLB::Mode mode, TLB::Translation *_trans, bool timing, bool functional, bool secure, TLB::ArmTranslationType tranType, bool _stage2Req) |
| void | setTlb (TLB *_tlb) |
| TLB * | getTlb () |
| void | setMMU (Stage2MMU *m, MasterID master_id) |
| void | memAttrs (ThreadContext *tc, TlbEntry &te, SCTLR sctlr, uint8_t texcb, bool s) |
| void | memAttrsLPAE (ThreadContext *tc, TlbEntry &te, LongDescriptor &lDescriptor) |
| void | memAttrsAArch64 (ThreadContext *tc, TlbEntry &te, LongDescriptor &lDescriptor) |
Public Member Functions inherited from ClockedObject | |
| ClockedObject (const ClockedObjectParams *p) | |
| const Params * | params () const |
| void | serialize (CheckpointOut &cp) const override |
| Serialize an object. More... | |
| void | unserialize (CheckpointIn &cp) override |
| Unserialize an object. More... | |
| Enums::PwrState | pwrState () const |
| std::string | pwrStateName () const |
| std::vector< double > | pwrStateWeights () const |
| Returns the percentage residency for each power state. More... | |
| void | computeStats () |
| Record stats values like state residency by computing the time difference from previous update. More... | |
| void | pwrState (Enums::PwrState) |
Public Member Functions inherited from SimObject | |
| const Params * | params () const |
| SimObject (const Params *_params) | |
| virtual | ~SimObject () |
| virtual const std::string | name () const |
| virtual void | loadState (CheckpointIn &cp) |
| loadState() is called on each SimObject when restoring from a checkpoint. More... | |
| virtual void | initState () |
| initState() is called on each SimObject when not restoring from a checkpoint. More... | |
| virtual void | regProbePoints () |
| Register probe points for this object. More... | |
| virtual void | regProbeListeners () |
| Register probe listeners for this object. More... | |
| ProbeManager * | getProbeManager () |
| Get the probe manager for this object. More... | |
| virtual void | startup () |
| startup() is the final initialization call before simulation. More... | |
| DrainState | drain () override |
| Provide a default implementation of the drain interface for objects that don't need draining. More... | |
| virtual void | memWriteback () |
| Write back dirty buffers to memory using functional writes. More... | |
| virtual void | memInvalidate () |
| Invalidate the contents of memory buffers. More... | |
| void | serialize (CheckpointOut &cp) const override |
| Serialize an object. More... | |
| void | unserialize (CheckpointIn &cp) override |
| Unserialize an object. More... | |
Public Member Functions inherited from EventManager | |
| EventManager (EventManager &em) | |
| EventManager (EventManager *em) | |
| EventManager (EventQueue *eq) | |
| EventQueue * | eventQueue () const |
| void | schedule (Event &event, Tick when) |
| void | deschedule (Event &event) |
| void | reschedule (Event &event, Tick when, bool always=false) |
| void | schedule (Event *event, Tick when) |
| void | deschedule (Event *event) |
| void | reschedule (Event *event, Tick when, bool always=false) |
| void | wakeupEventQueue (Tick when=(Tick) -1) |
| void | setCurTick (Tick newVal) |
Public Member Functions inherited from Serializable | |
| Serializable () | |
| virtual | ~Serializable () |
| void | serializeSection (CheckpointOut &cp, const char *name) const |
| Serialize an object into a new section. More... | |
| void | serializeSection (CheckpointOut &cp, const std::string &name) const |
| void | unserializeSection (CheckpointIn &cp, const char *name) |
| Unserialize an a child object. More... | |
| void | unserializeSection (CheckpointIn &cp, const std::string &name) |
Public Member Functions inherited from Drainable | |
| DrainState | drainState () const |
| Return the current drain state of an object. More... | |
| virtual void | notifyFork () |
| Notify a child process of a fork. More... | |
Public Member Functions inherited from Stats::Group | |
| Group ()=delete | |
| Group (const Group &)=delete | |
| Group & | operator= (const Group &)=delete |
| Group (Group *parent, const char *name=nullptr) | |
| Construct a new statistics group. More... | |
| virtual | ~Group () |
| virtual void | resetStats () |
| Callback to reset stats. More... | |
| virtual void | preDumpStats () |
| Callback before stats are dumped. More... | |
| void | addStat (Stats::Info *info) |
| Register a stat with this group. More... | |
| const std::map< std::string, Group * > & | getStatGroups () const |
| Get all child groups associated with this object. More... | |
| const std::vector< Info * > & | getStats () const |
| Get all stats associated with this object. More... | |
| void | addStatGroup (const char *name, Group *block) |
| Add a stat block as a child of this block. More... | |
Public Member Functions inherited from Clocked | |
| void | updateClockPeriod () |
| Update the tick to the current tick. More... | |
| Tick | clockEdge (Cycles cycles=Cycles(0)) const |
| Determine the tick when a cycle begins, by default the current one, but the argument also enables the caller to determine a future cycle. More... | |
| Cycles | curCycle () const |
| Determine the current cycle, corresponding to a tick aligned to a clock edge. More... | |
| Tick | nextCycle () const |
| Based on the clock of the object, determine the start tick of the first cycle that is at least one cycle in the future. More... | |
| uint64_t | frequency () const |
| Tick | clockPeriod () const |
| double | voltage () const |
| Cycles | ticksToCycles (Tick t) const |
| Tick | cyclesToTicks (Cycles c) const |
Static Public Member Functions | |
| static LookupLevel | toLookupLevel (uint8_t lookup_level_as_int) |
Static Public Member Functions inherited from SimObject | |
| static void | serializeAll (CheckpointOut &cp) |
| Serialize all SimObjects in the system. More... | |
| static SimObject * | find (const char *name) |
| Find the SimObject with the given name and return a pointer to it. More... | |
Static Public Member Functions inherited from Serializable | |
| static const std::string & | currentSection () |
| Get the fully-qualified name of the active section. More... | |
| static void | serializeAll (const std::string &cpt_dir) |
| static void | unserializeGlobals (CheckpointIn &cp) |
Protected Attributes | |
| std::list< WalkerState * > | stateQueues [MAX_LOOKUP_LEVELS] |
| Queues of requests for all the different lookup levels. More... | |
| std::list< WalkerState * > | pendingQueue |
| Queue of requests that have passed are waiting because the walker is currently busy. More... | |
| Stage2MMU * | stage2Mmu |
| The MMU to forward second stage look upts to. More... | |
| DmaPort * | port |
| Port shared by the two table walkers. More... | |
| MasterID | masterId |
| Master id assigned by the MMU. More... | |
| const bool | isStage2 |
| Indicates whether this table walker is part of the stage 2 mmu. More... | |
| TLB * | tlb |
| TLB that is initiating these table walks. More... | |
| SCTLR | sctlr |
| Cached copy of the sctlr as it existed when translation began. More... | |
| WalkerState * | currState |
| bool | pending |
| If a timing translation is currently in progress. More... | |
| unsigned | numSquashable |
| The number of walks belonging to squashed instructions that can be removed from the pendingQueue per cycle. More... | |
| bool | haveSecurity |
| Cached copies of system-level properties. More... | |
| bool | _haveLPAE |
| bool | _haveVirtualization |
| uint8_t | physAddrRange |
| bool | _haveLargeAsid64 |
| Stats::Scalar | statWalks |
| Statistics. More... | |
| Stats::Scalar | statWalksShortDescriptor |
| Stats::Scalar | statWalksLongDescriptor |
| Stats::Vector | statWalksShortTerminatedAtLevel |
| Stats::Vector | statWalksLongTerminatedAtLevel |
| Stats::Scalar | statSquashedBefore |
| Stats::Scalar | statSquashedAfter |
| Stats::Histogram | statWalkWaitTime |
| Stats::Histogram | statWalkServiceTime |
| Stats::Histogram | statPendingWalks |
| Stats::Vector | statPageSizes |
| Stats::Vector2d | statRequestOrigin |
| unsigned | pendingReqs |
| Tick | pendingChangeTick |
Protected Attributes inherited from ClockedObject | |
| Enums::PwrState | _currPwrState |
| To keep track of the current power state. More... | |
| Tick | prvEvalTick |
| ClockedObject::ClockedObjectStats | stats |
Protected Attributes inherited from SimObject | |
| const SimObjectParams * | _params |
| Cached copy of the object parameters. More... | |
Protected Attributes inherited from EventManager | |
| EventQueue * | eventq |
| A pointer to this object's event queue. More... | |
Static Protected Attributes | |
| static const unsigned | REQUESTED = 0 |
| static const unsigned | COMPLETED = 1 |
Private Member Functions | |
| void | doL1Descriptor () |
| void | doL1DescriptorWrapper () |
| void | doL2Descriptor () |
| void | doL2DescriptorWrapper () |
| void | doLongDescriptor () |
| void | doL0LongDescriptorWrapper () |
| void | doL1LongDescriptorWrapper () |
| void | doL2LongDescriptorWrapper () |
| void | doL3LongDescriptorWrapper () |
| void | doLongDescriptorWrapper (LookupLevel curr_lookup_level) |
| bool | fetchDescriptor (Addr descAddr, uint8_t *data, int numBytes, Request::Flags flags, int queueIndex, Event *event, void(TableWalker::*doDescriptor)()) |
| Fault | generateLongDescFault (ArmFault::FaultSource src) |
| void | insertTableEntry (DescriptorBase &descriptor, bool longDescriptor) |
| Fault | processWalk () |
| Fault | processWalkLPAE () |
| Fault | processWalkAArch64 () |
| void | processWalkWrapper () |
| void | nextWalk (ThreadContext *tc) |
| void | pendingChange () |
| Fault | testWalk (Addr pa, Addr size, TlbEntry::DomainType domain, LookupLevel lookup_level) |
Static Private Member Functions | |
| static unsigned | adjustTableSizeAArch64 (unsigned tsz) |
| static bool | checkAddrSizeFaultAArch64 (Addr addr, int currPhysAddrRange) |
| Returns true if the address exceeds the range permitted by the system-wide setting or by the TCR_ELx IPS/PS setting. More... | |
| static uint8_t | pageSizeNtoStatBin (uint8_t N) |
Additional Inherited Members | |
Static Public Attributes inherited from Serializable | |
| static int | ckptCount = 0 |
| static int | ckptMaxCount = 0 |
| static int | ckptPrevCount = -1 |
Protected Member Functions inherited from Drainable | |
| Drainable () | |
| virtual | ~Drainable () |
| void | signalDrainDone () const |
| Signal that an object is drained. More... | |
Protected Member Functions inherited from Clocked | |
| Clocked (ClockDomain &clk_domain) | |
| Create a clocked object and set the clock domain based on the parameters. More... | |
| Clocked (Clocked &)=delete | |
| Clocked & | operator= (Clocked &)=delete |
| virtual | ~Clocked () |
| Virtual destructor due to inheritance. More... | |
| void | resetClock () const |
| Reset the object's clock using the current global tick value. More... | |
| virtual void | clockPeriodUpdated () |
| A hook subclasses can implement so they can do any extra work that's needed when the clock rate is changed. More... | |
Definition at line 64 of file table_walker.hh.
| typedef ArmTableWalkerParams ArmISA::TableWalker::Params |
Definition at line 884 of file table_walker.hh.
| Enumerator | |
|---|---|
| Grain4KB | |
| Grain16KB | |
| Grain64KB | |
| ReservedGrain | |
Definition at line 370 of file table_walker.hh.
| TableWalker::TableWalker | ( | const Params * | p | ) |
Definition at line 59 of file table_walker.cc.
References _haveLargeAsid64, _haveLPAE, _haveVirtualization, doL0LongDescEvent, doL0LongDescriptorWrapper(), doL1DescriptorWrapper(), doL1LongDescEvent, doL1LongDescriptorWrapper(), doL2DescEvent, doL2DescriptorWrapper(), doL2LongDescEvent, doL2LongDescriptorWrapper(), doL3LongDescEvent, doL3LongDescriptorWrapper(), doProcessEvent, FullSystem, ArmSystem::haveLargeAsid64(), ArmSystem::haveLPAE(), ArmSystem::haveSecurity(), haveSecurity, ArmSystem::haveVirtualization(), LongDescEventByLevel, SimObject::name(), MipsISA::p, ArmSystem::physAddrRange(), physAddrRange, processWalkWrapper(), and sctlr.
|
virtual |
Definition at line 96 of file table_walker.cc.
|
staticprivate |
Definition at line 737 of file table_walker.cc.
Referenced by processWalkAArch64().
|
staticprivate |
Returns true if the address exceeds the range permitted by the system-wide setting or by the TCR_ELx IPS/PS setting.
Definition at line 747 of file table_walker.cc.
References bits(), and ArmISA::MaxPhysAddrRange.
Referenced by doLongDescriptor(), and processWalkAArch64().
| void TableWalker::completeDrain | ( | ) |
Checks if all state is cleared and if so, completes drain.
Definition at line 147 of file table_walker.cc.
References DPRINTF, Draining, Drainable::drainState(), ArmISA::L0, ArmISA::L1, ArmISA::L2, ArmISA::L3, pendingQueue, Drainable::signalDrainDone(), and stateQueues.
Referenced by haveLargeAsid64(), and nextWalk().
|
private |
Definition at line 1917 of file table_walker.cc.
References doLongDescriptorWrapper(), and ArmISA::L0.
Referenced by TableWalker().
|
private |
Definition at line 1477 of file table_walker.cc.
References ArmISA::ArmFault::AccessFlagLL, ArmISA::TableWalker::L1Descriptor::ap(), bits(), ArmISA::byteOrder(), currState, ArmISA::TableWalker::L1Descriptor::data, ArmISA::TableWalker::L2Descriptor::data, ArmISA::TableWalker::WalkerState::delayed, doL2DescEvent, doL2Descriptor(), ArmISA::TableWalker::L1Descriptor::domain(), DPRINTF, ArmISA::TableWalker::WalkerState::fault, fetchDescriptor(), htog(), ArmISA::TableWalker::L1Descriptor::Ignore, insertTableEntry(), ArmISA::TableWalker::WalkerState::isFetch, ArmISA::TableWalker::WalkerState::isSecure, isStage2, ArmISA::TableWalker::WalkerState::isUncacheable, ArmISA::TableWalker::WalkerState::isWrite, ArmISA::L1, ArmISA::TableWalker::WalkerState::l1Desc, ArmISA::L2, ArmISA::TableWalker::L1Descriptor::l2Addr(), ArmISA::TableWalker::WalkerState::l2Desc, ArmISA::TlbEntry::NoAccess, NoFault, ArmISA::TableWalker::L1Descriptor::PageTable, panic, Request::PT_WALK, ArmISA::TableWalker::WalkerState::req, ArmISA::TableWalker::L1Descriptor::Reserved, ArmISA::TableWalker::WalkerState::sctlr, ArmISA::TableWalker::L1Descriptor::Section, Request::SECURE, Flags< T >::set(), ArmISA::TableWalker::L1Descriptor::supersection(), ArmISA::TableWalker::WalkerState::tc, ArmISA::te, testWalk(), ArmISA::TableWalker::WalkerState::timing, ArmISA::ArmFault::TranslationLL, ArmISA::TableWalker::L1Descriptor::type(), Request::UNCACHEABLE, ArmISA::TableWalker::WalkerState::vaddr, ArmISA::TableWalker::WalkerState::vaddr_tainted, and ArmISA::ArmFault::VmsaTran.
Referenced by getTlb(), and processWalk().
|
private |
Definition at line 1820 of file table_walker.cc.
References currState, curTick(), ArmISA::TableWalker::L1Descriptor::data, ArmISA::TableWalker::WalkerState::delayed, ArmISA::TableWalker::WalkerState::doL1Descriptor(), DPRINTF, ArmISA::TableWalker::WalkerState::fault, BaseTLB::Translation::finish(), ArmISA::L1, ArmISA::TableWalker::WalkerState::l1Desc, ArmISA::L2, ArmISA::TableWalker::WalkerState::mode, nextWalk(), NoFault, pending, ArmISA::TableWalker::WalkerState::req, Stats::DistBase< Derived, Stor >::sample(), ArmISA::TableWalker::WalkerState::stage2Tran, ArmISA::TableWalker::WalkerState::startTime, stateQueues, statWalkServiceTime, statWalksShortTerminatedAtLevel, ArmISA::TableWalker::WalkerState::tc, tlb, ArmISA::TLB::translateTiming(), ArmISA::TableWalker::WalkerState::transState, and ArmISA::TableWalker::WalkerState::vaddr_tainted.
Referenced by getTlb(), and TableWalker().
|
private |
Definition at line 1923 of file table_walker.cc.
References doLongDescriptorWrapper(), and ArmISA::L1.
Referenced by TableWalker().
|
private |
Definition at line 1764 of file table_walker.cc.
References ArmISA::ArmFault::AccessFlagLL, ArmISA::TableWalker::L2Descriptor::ap(), bits(), ArmISA::byteOrder(), currState, ArmISA::TableWalker::L2Descriptor::data, ArmISA::TableWalker::L1Descriptor::domain(), DPRINTF, ArmISA::TableWalker::WalkerState::fault, htog(), insertTableEntry(), ArmISA::TableWalker::L2Descriptor::invalid(), ArmISA::TableWalker::WalkerState::isFetch, isStage2, ArmISA::TableWalker::WalkerState::isWrite, ArmISA::TableWalker::WalkerState::l1Desc, ArmISA::L2, ArmISA::TableWalker::WalkerState::l2Desc, ArmISA::TlbEntry::NoAccess, NoFault, ArmISA::TableWalker::WalkerState::req, ArmISA::TableWalker::WalkerState::sctlr, ArmISA::TableWalker::WalkerState::tc, ArmISA::te, ArmISA::TableWalker::WalkerState::timing, ArmISA::ArmFault::TranslationLL, ArmISA::TableWalker::WalkerState::vaddr_tainted, and ArmISA::ArmFault::VmsaTran.
Referenced by doL1Descriptor().
|
private |
Definition at line 1876 of file table_walker.cc.
References currState, curTick(), ArmISA::TableWalker::WalkerState::delayed, ArmISA::TableWalker::WalkerState::doL2Descriptor(), DPRINTF, ArmISA::TableWalker::WalkerState::fault, BaseTLB::Translation::finish(), ArmISA::L2, ArmISA::TableWalker::WalkerState::mode, nextWalk(), NoFault, pending, ArmISA::TableWalker::WalkerState::req, Stats::DistBase< Derived, Stor >::sample(), ArmISA::TableWalker::WalkerState::stage2Tran, ArmISA::TableWalker::WalkerState::startTime, stateQueues, statWalkServiceTime, statWalksShortTerminatedAtLevel, ArmISA::TableWalker::WalkerState::tc, tlb, ArmISA::TLB::translateTiming(), ArmISA::TableWalker::WalkerState::transState, and ArmISA::TableWalker::WalkerState::vaddr_tainted.
Referenced by TableWalker().
|
private |
Definition at line 1929 of file table_walker.cc.
References doLongDescriptorWrapper(), and ArmISA::L2.
Referenced by TableWalker().
|
private |
Definition at line 1935 of file table_walker.cc.
References doLongDescriptorWrapper(), and ArmISA::L3.
Referenced by TableWalker().
|
private |
Definition at line 1602 of file table_walker.cc.
References ArmISA::TableWalker::WalkerState::aarch64, ArmISA::ArmFault::AccessFlagLL, ArmISA::ArmFault::AddressSizeLL, ArmISA::TableWalker::LongDescriptor::af(), ArmISA::TableWalker::LongDescriptor::ap(), ArmISA::TableWalker::LongDescriptor::Block, ArmISA::byteOrder(), checkAddrSizeFaultAArch64(), ArmISA::TlbEntry::Client, currState, ArmISA::TableWalker::LongDescriptor::data, ArmISA::TableWalker::WalkerState::delayed, DPRINTF, MipsISA::event, ArmISA::TableWalker::WalkerState::fault, ArmISA::ArmFault::FaultSourceInvalid, fetchDescriptor(), generateLongDescFault(), ArmISA::TableWalker::WalkerState::hpd, htog(), insertTableEntry(), ArmISA::TableWalker::LongDescriptor::Invalid, ArmISA::TableWalker::WalkerState::isUncacheable, X86ISA::L, ArmISA::L1, ArmISA::L2, ArmISA::L3, ArmISA::TableWalker::WalkerState::longDesc, LongDescEventByLevel, ArmISA::TableWalker::DescriptorBase::lookupLevel, ArmISA::MaxPhysAddrRange, mbits(), ArmISA::TableWalker::LongDescriptor::nextDescAddr(), NoFault, ArmISA::TableWalker::LongDescriptor::offsetBits(), ArmISA::TableWalker::LongDescriptor::Page, panic, ArmISA::TableWalker::WalkerState::physAddrRange, Request::PT_WALK, ArmISA::TableWalker::LongDescriptor::pxn(), ArmISA::TableWalker::LongDescriptor::pxnTable(), ArmISA::TableWalker::WalkerState::pxnTable, ArmISA::TableWalker::WalkerState::req, ArmISA::TableWalker::LongDescriptor::rwTable(), ArmISA::TableWalker::WalkerState::rwTable, ArmISA::TableWalker::WalkerState::sctlr, Request::SECURE, ArmISA::TableWalker::WalkerState::secureLookup, ArmISA::TableWalker::LongDescriptor::secureTable(), Flags< T >::set(), ArmISA::TableWalker::LongDescriptor::Table, ArmISA::TableWalker::WalkerState::tc, ArmISA::te, testWalk(), ArmISA::TableWalker::WalkerState::timing, toLookupLevel(), ArmISA::ArmFault::TranslationLL, ArmISA::TableWalker::LongDescriptor::type(), Request::UNCACHEABLE, ArmISA::TableWalker::LongDescriptor::userTable(), ArmISA::TableWalker::WalkerState::userTable, ArmISA::TableWalker::WalkerState::vaddr, ArmISA::TableWalker::WalkerState::vaddr_tainted, ArmISA::TableWalker::LongDescriptor::xn(), ArmISA::TableWalker::LongDescriptor::xnTable(), and ArmISA::TableWalker::WalkerState::xnTable.
Referenced by processWalkAArch64(), and processWalkLPAE().
|
private |
Definition at line 1941 of file table_walker.cc.
References currState, curTick(), ArmISA::TableWalker::WalkerState::delayed, ArmISA::TableWalker::WalkerState::doLongDescriptor(), DPRINTF, ArmISA::TableWalker::WalkerState::fault, BaseTLB::Translation::finish(), ArmISA::TableWalker::WalkerState::longDesc, ArmISA::TableWalker::DescriptorBase::lookupLevel, ArmISA::MAX_LOOKUP_LEVELS, ArmISA::TableWalker::WalkerState::mode, nextWalk(), NoFault, panic, pending, ArmISA::TableWalker::WalkerState::req, Stats::DistBase< Derived, Stor >::sample(), ArmISA::TableWalker::WalkerState::stage2Tran, ArmISA::TableWalker::WalkerState::startTime, stateQueues, statWalkServiceTime, statWalksLongTerminatedAtLevel, ArmISA::TableWalker::WalkerState::tc, tlb, ArmISA::TLB::translateTiming(), ArmISA::TableWalker::WalkerState::transState, and ArmISA::TableWalker::WalkerState::vaddr_tainted.
Referenced by doL0LongDescriptorWrapper(), doL1LongDescriptorWrapper(), doL2LongDescriptorWrapper(), and doL3LongDescriptorWrapper().
|
overridevirtual |
Notify an object that it needs to drain its state.
If the object does not need further simulation to drain internal buffers, it returns DrainState::Drained and automatically switches to the Drained state. If the object needs more simulation, it returns DrainState::Draining and automatically enters the Draining state. Other return values are invalid.
Implements Drainable.
Definition at line 160 of file table_walker.cc.
References DPRINTF, Drained, Draining, ArmISA::i, ArmISA::MAX_LOOKUP_LEVELS, pendingQueue, and stateQueues.
Referenced by haveLargeAsid64().
|
overridevirtual |
Resume execution after a successful drain.
Reimplemented from Drainable.
Definition at line 181 of file table_walker.cc.
References currState, params(), and pendingChange().
Referenced by haveLargeAsid64().
|
private |
Definition at line 2006 of file table_walker.cc.
References Clocked::clockPeriod(), currState, Packet::dataStatic(), ContextSwitchTaskId::DMA, DmaPort::dmaAction(), DPRINTF, ArmISA::Stage2MMU::Stage2Translation::fault, ArmISA::TableWalker::WalkerState::fault, ArmISA::TableWalker::WalkerState::functional, ThreadContext::getCpuPtr(), masterId, ArmISA::TLB::MustBeOne, NoFault, port, ArmISA::Stage2MMU::readDataTimed(), ArmISA::Stage2MMU::readDataUntimed(), MemCmd::ReadReq, ArmISA::TableWalker::WalkerState::req, MasterPort::sendFunctional(), stage2Mmu, ArmISA::TableWalker::WalkerState::stage2Req, ArmISA::TableWalker::WalkerState::stage2Tran, stateQueues, ArmISA::TableWalker::WalkerState::tc, ArmISA::TableWalker::WalkerState::timing, and ArmISA::TableWalker::WalkerState::vaddr.
Referenced by doL1Descriptor(), doLongDescriptor(), processWalk(), processWalkAArch64(), and processWalkLPAE().
|
private |
Definition at line 1582 of file table_walker.cc.
References currState, ArmISA::TableWalker::WalkerState::isFetch, isStage2, ArmISA::TableWalker::WalkerState::isWrite, ArmISA::TableWalker::WalkerState::longDesc, ArmISA::TableWalker::DescriptorBase::lookupLevel, ArmISA::ArmFault::LpaeTran, ArmISA::TlbEntry::NoAccess, ArmISA::TableWalker::WalkerState::req, and ArmISA::TableWalker::WalkerState::vaddr_tainted.
Referenced by doLongDescriptor().
|
overridevirtual |
Get a port with a given name and index.
This is used at binding time and returns a reference to a protocol-agnostic port.
| if_name | Port name |
| idx | Index in the case of a VectorPort |
Reimplemented from SimObject.
Definition at line 118 of file table_walker.cc.
References fatal, SimObject::getPort(), isStage2, and port.
Referenced by haveLargeAsid64().
|
inline |
Definition at line 916 of file table_walker.hh.
References doL1Descriptor(), doL1DescriptorWrapper(), ArmISA::m, memAttrs(), memAttrsAArch64(), memAttrsLPAE(), ArmISA::s, setMMU(), ArmISA::te, ArmISA::TableWalker::DescriptorBase::texcb(), tlb, and toLookupLevel().
|
inline |
Definition at line 898 of file table_walker.hh.
References _haveLargeAsid64, ArmISA::asid, completeDrain(), drain(), drainResume(), getPort(), InvalidPortID, ArmISA::mode, regStats(), ArmISA::TableWalker::DescriptorBase::secure(), and walk().
Referenced by ArmISA::TLB::TLB().
|
inline |
Definition at line 896 of file table_walker.hh.
References _haveLPAE.
Referenced by ArmISA::TLB::TLB().
|
inline |
Definition at line 897 of file table_walker.hh.
References _haveVirtualization.
Referenced by ArmISA::TLB::TLB().
|
overridevirtual |
init() is called after all C++ SimObjects have been created and all ports are connected.
Initializations that are independent of unserialization but rely on a fully instantiated and connected SimObject graph should be done here.
Reimplemented from SimObject.
Definition at line 110 of file table_walker.cc.
References fatal_if, port, stage2Mmu, and tlb.
Referenced by params().
|
private |
Definition at line 2079 of file table_walker.cc.
References ArmISA::TableWalker::WalkerState::aarch64, ArmISA::TableWalker::DescriptorBase::ap(), ArmISA::TlbEntry::ap, ArmISA::TableWalker::LongDescriptor::ap(), ArmISA::TlbEntry::asid, ArmISA::TableWalker::WalkerState::asid, COMPLETED, currState, ArmISA::TableWalker::DescriptorBase::dbgHeader(), ArmISA::TableWalker::DescriptorBase::domain(), ArmISA::TlbEntry::domain, DPRINTF, ArmISA::TlbEntry::el, ArmISA::TableWalker::WalkerState::el, ArmISA::EL1, ArmISA::TableWalker::DescriptorBase::getRawData(), ArmISA::TableWalker::DescriptorBase::global(), ArmISA::TlbEntry::global, ArmISA::TlbEntry::hap, haveSecurity, ArmISA::TLB::insert(), ArmISA::TableWalker::WalkerState::isFetch, ArmISA::TlbEntry::isHyp, ArmISA::TableWalker::WalkerState::isHyp, ArmISA::TableWalker::WalkerState::isSecure, isStage2, ArmISA::TlbEntry::longDescFormat, ArmISA::TableWalker::DescriptorBase::lookupLevel, ArmISA::TlbEntry::lookupLevel, memAttrs(), memAttrsAArch64(), memAttrsLPAE(), ArmISA::TlbEntry::N, ArmISA::TlbEntry::nonCacheable, ArmISA::TlbEntry::ns, ArmISA::TlbEntry::nstid, ArmISA::TableWalker::DescriptorBase::offsetBits(), pageSizeNtoStatBin(), ArmISA::TableWalker::DescriptorBase::pfn(), ArmISA::TlbEntry::pfn, ArmISA::TlbEntry::pxn, ArmISA::TableWalker::LongDescriptor::pxn(), ArmISA::TableWalker::WalkerState::pxnTable, ArmISA::TableWalker::WalkerState::req, ArmISA::TableWalker::WalkerState::rwTable, ArmISA::TableWalker::WalkerState::sctlr, ArmISA::TableWalker::DescriptorBase::secure(), ArmISA::TableWalker::DescriptorBase::shareable(), ArmISA::TlbEntry::size, statPageSizes, statRequestOrigin, ArmISA::TableWalker::WalkerState::tc, ArmISA::te, ArmISA::TableWalker::DescriptorBase::texcb(), ArmISA::TableWalker::WalkerState::timing, tlb, ArmISA::TableWalker::WalkerState::userTable, ArmISA::TableWalker::WalkerState::vaddr, ArmISA::TlbEntry::valid, ArmISA::TlbEntry::vmid, ArmISA::TableWalker::WalkerState::vmid, ArmISA::TlbEntry::vpn, ArmISA::TableWalker::DescriptorBase::xn(), ArmISA::TlbEntry::xn, and ArmISA::TableWalker::WalkerState::xnTable.
Referenced by doL1Descriptor(), doL2Descriptor(), and doLongDescriptor().
| void TableWalker::memAttrs | ( | ThreadContext * | tc, |
| TlbEntry & | te, | ||
| SCTLR | sctlr, | ||
| uint8_t | texcb, | ||
| bool | s | ||
| ) |
Definition at line 1045 of file table_walker.cc.
References bits(), currState, ArmISA::TlbEntry::Device, DPRINTF, ArmISA::TlbEntry::innerAttrs, ArmISA::TableWalker::WalkerState::isSecure, ArmISA::MISCREG_NMRR, ArmISA::MISCREG_PRRR, ArmISA::TlbEntry::mtype, ArmISA::TlbEntry::nonCacheable, ArmISA::TlbEntry::Normal, ArmISA::TlbEntry::outerAttrs, ArmISA::TlbEntry::outerShareable, panic, ThreadContext::readMiscReg(), ArmISA::s, ArmISA::TlbEntry::setAttributes(), ArmISA::TlbEntry::shareable, ArmISA::snsBankedIndex(), ArmISA::TlbEntry::StronglyOrdered, and ArmISA::TableWalker::WalkerState::tc.
Referenced by getTlb(), and insertTableEntry().
| void TableWalker::memAttrsAArch64 | ( | ThreadContext * | tc, |
| TlbEntry & | te, | ||
| LongDescriptor & | lDescriptor | ||
| ) |
Definition at line 1378 of file table_walker.cc.
References ArmISA::attr, ArmISA::TlbEntry::attributes, ArmISA::TableWalker::LongDescriptor::attrIndx(), bits(), currState, ArmISA::TlbEntry::Device, DPRINTF, ArmISA::TableWalker::WalkerState::el, ArmISA::EL0, ArmISA::EL1, ArmISA::EL2, ArmISA::EL3, ArmISA::TlbEntry::innerAttrs, isStage2, M5_FALLTHROUGH, ArmISA::TableWalker::LongDescriptor::memAttr(), ArmISA::MISCREG_MAIR_EL1, ArmISA::MISCREG_MAIR_EL2, ArmISA::MISCREG_MAIR_EL3, ArmISA::TlbEntry::mtype, ArmISA::TlbEntry::nonCacheable, ArmISA::TlbEntry::Normal, ArmISA::TlbEntry::ns, ArmISA::TlbEntry::outerAttrs, ArmISA::TlbEntry::outerShareable, panic, ThreadContext::readMiscReg(), ArmISA::TableWalker::LongDescriptor::sh(), ArmISA::sh, ArmISA::TlbEntry::shareable, ArmISA::TlbEntry::StronglyOrdered, and warn_if.
Referenced by getTlb(), and insertTableEntry().
| void TableWalker::memAttrsLPAE | ( | ThreadContext * | tc, |
| TlbEntry & | te, | ||
| LongDescriptor & | lDescriptor | ||
| ) |
Definition at line 1252 of file table_walker.cc.
References _haveLPAE, ArmISA::attr, ArmISA::TlbEntry::attributes, ArmISA::TableWalker::LongDescriptor::attrIndx(), bits(), currState, ArmISA::TlbEntry::Device, DPRINTF, ArmISA::TlbEntry::innerAttrs, ArmISA::TableWalker::WalkerState::isSecure, isStage2, ArmISA::TableWalker::LongDescriptor::memAttr(), ArmISA::MISCREG_MAIR0, ArmISA::MISCREG_MAIR1, ArmISA::TlbEntry::mtype, ArmISA::TlbEntry::nonCacheable, ArmISA::TlbEntry::Normal, ArmISA::TlbEntry::outerAttrs, ArmISA::TlbEntry::outerShareable, panic, ThreadContext::readMiscReg(), X86ISA::reg, ArmISA::TlbEntry::setAttributes(), ArmISA::TableWalker::LongDescriptor::sh(), ArmISA::sh, ArmISA::TlbEntry::shareable, ArmISA::snsBankedIndex(), ArmISA::TlbEntry::StronglyOrdered, and ArmISA::TableWalker::WalkerState::tc.
Referenced by getTlb(), and insertTableEntry().
|
private |
Definition at line 1997 of file table_walker.cc.
References Clocked::clockEdge(), completeDrain(), doProcessEvent, pendingQueue, and EventManager::schedule().
Referenced by doL1DescriptorWrapper(), doL2DescriptorWrapper(), doLongDescriptorWrapper(), processWalk(), processWalkAArch64(), processWalkLPAE(), and processWalkWrapper().
|
staticprivate |
Definition at line 2202 of file table_walker.cc.
References panic.
Referenced by insertTableEntry().
|
inline |
Definition at line 889 of file table_walker.hh.
References SimObject::_params, and init().
Referenced by drainResume().
|
private |
Definition at line 2177 of file table_walker.cc.
References currState, curTick(), ArmISA::n, pendingChangeTick, pendingQueue, pendingReqs, Stats::DistBase< Derived, Stor >::sample(), and statPendingWalks.
Referenced by drainResume(), processWalkWrapper(), and walk().
|
private |
Definition at line 456 of file table_walker.cc.
References bits(), currState, curTick(), ArmISA::TableWalker::L1Descriptor::data, ArmISA::TableWalker::WalkerState::delayed, doL1DescEvent, doL1Descriptor(), DPRINTF, ArmISA::f, ArmISA::TableWalker::WalkerState::fault, fetchDescriptor(), haveSecurity, ArmISA::TableWalker::WalkerState::isFetch, ArmISA::TableWalker::WalkerState::isSecure, isStage2, ArmISA::TableWalker::WalkerState::isUncacheable, ArmISA::TableWalker::WalkerState::isWrite, ArmISA::L1, ArmISA::TableWalker::WalkerState::l1Desc, mbits(), ArmISA::MISCREG_TTBR0, ArmISA::MISCREG_TTBR1, nextWalk(), ArmISA::TlbEntry::NoAccess, pending, Request::PT_WALK, ThreadContext::readMiscReg(), ArmISA::TableWalker::WalkerState::req, Stats::DistBase< Derived, Stor >::sample(), ArmISA::TableWalker::WalkerState::sctlr, Request::SECURE, Flags< T >::set(), ArmISA::snsBankedIndex(), ArmISA::TableWalker::WalkerState::startTime, statWalkWaitTime, ArmISA::TableWalker::WalkerState::tc, testWalk(), ArmISA::TableWalker::WalkerState::timing, ArmISA::ArmFault::TranslationLL, ArmISA::TableWalker::WalkerState::ttbcr, Request::UNCACHEABLE, ArmISA::TableWalker::WalkerState::vaddr, ArmISA::TableWalker::WalkerState::vaddr_tainted, and ArmISA::ArmFault::VmsaTran.
Referenced by processWalkWrapper(), and walk().
|
private |
Definition at line 754 of file table_walker.cc.
References ArmISA::TableWalker::LongDescriptor::aarch64, ArmISA::TableWalker::WalkerState::aarch64, ArmISA::ArmFault::AddressSizeLL, adjustTableSizeAArch64(), bits(), checkAddrSizeFaultAArch64(), currState, curTick(), ArmISA::TableWalker::LongDescriptor::data, ArmISA::decodePhysAddrRange64(), doLongDescriptor(), DPRINTF, ArmISA::TableWalker::WalkerState::el, ArmISA::EL0, ArmISA::EL1, ArmISA::EL2, ArmISA::EL3, ArmISA::f, ArmISA::TableWalker::WalkerState::fault, fetchDescriptor(), Grain16KB, Grain4KB, Grain64KB, ArmISA::TableWalker::LongDescriptor::grainSize, ArmISA::TableWalker::WalkerState::hcr, ArmISA::TableWalker::WalkerState::hpd, ArmISA::i, ArmISA::TableWalker::WalkerState::isFetch, ArmISA::TableWalker::WalkerState::isSecure, isStage2, ArmISA::TableWalker::WalkerState::isUncacheable, ArmISA::TableWalker::WalkerState::isWrite, X86ISA::L, ArmISA::L0, ArmISA::L1, ArmISA::L2, ArmISA::L3, ArmISA::TableWalker::WalkerState::longDesc, LongDescEventByLevel, ArmISA::TableWalker::DescriptorBase::lookupLevel, ArmISA::ArmFault::LpaeTran, ArmISA::mask, ArmISA::MAX_LOOKUP_LEVELS, mbits(), ArmISA::MISCREG_TTBR0_EL1, ArmISA::MISCREG_TTBR0_EL2, ArmISA::MISCREG_TTBR0_EL3, ArmISA::MISCREG_TTBR1_EL1, ArmISA::MISCREG_TTBR1_EL2, ArmISA::MISCREG_VTTBR_EL2, nextWalk(), ArmISA::TlbEntry::NoAccess, panic_if, pending, ArmISA::TableWalker::WalkerState::physAddrRange, ArmISA::ps, Request::PT_WALK, ThreadContext::readMiscReg(), ArmISA::TableWalker::WalkerState::req, ReservedGrain, Stats::DistBase< Derived, Stor >::sample(), ArmISA::TableWalker::WalkerState::sctlr, Request::SECURE, Flags< T >::set(), ArmISA::TableWalker::WalkerState::startTime, statWalkWaitTime, ArmISA::stride, ArmISA::TableWalker::WalkerState::tc, ArmISA::TableWalker::WalkerState::tcr, testWalk(), ArmISA::TableWalker::WalkerState::timing, ArmISA::ArmFault::TranslationLL, Request::UNCACHEABLE, ArmISA::TableWalker::WalkerState::vaddr, ArmISA::TableWalker::WalkerState::vaddr_tainted, ArmISA::TableWalker::WalkerState::vtcr, and warn_once.
Referenced by processWalkWrapper(), and walk().
|
private |
Definition at line 565 of file table_walker.cc.
References ArmISA::TableWalker::LongDescriptor::aarch64, bits(), currState, curTick(), ArmISA::TableWalker::LongDescriptor::data, ArmISA::TableWalker::WalkerState::delayed, doLongDescriptor(), DPRINTF, ArmISA::f, ArmISA::TableWalker::WalkerState::fault, fetchDescriptor(), Grain4KB, ArmISA::TableWalker::LongDescriptor::grainSize, ArmISA::TableWalker::WalkerState::htcr, ArmISA::TableWalker::WalkerState::isFetch, ArmISA::TableWalker::WalkerState::isHyp, ArmISA::TableWalker::WalkerState::isSecure, isStage2, ArmISA::TableWalker::WalkerState::isUncacheable, ArmISA::TableWalker::WalkerState::isWrite, ArmISA::L1, ArmISA::L2, ArmISA::TableWalker::WalkerState::longDesc, LongDescEventByLevel, ArmISA::longDescFormatInUse(), ArmISA::TableWalker::DescriptorBase::lookupLevel, ArmISA::ArmFault::LpaeTran, mbits(), ArmISA::MISCREG_HTTBR, ArmISA::MISCREG_TTBR0, ArmISA::MISCREG_TTBR1, ArmISA::MISCREG_VTTBR, ArmISA::n, nextWalk(), ArmISA::TlbEntry::NoAccess, pending, Request::PT_WALK, ThreadContext::readMiscReg(), ArmISA::TableWalker::WalkerState::req, Stats::DistBase< Derived, Stor >::sample(), ArmISA::TableWalker::WalkerState::sctlr, Request::SECURE, Flags< T >::set(), ArmISA::snsBankedIndex(), ArmISA::TableWalker::WalkerState::startTime, statWalkWaitTime, ArmISA::TableWalker::WalkerState::tc, testWalk(), ArmISA::TableWalker::WalkerState::timing, ArmISA::ArmFault::TranslationLL, ArmISA::TableWalker::WalkerState::ttbcr, ULL, Request::UNCACHEABLE, ArmISA::TableWalker::WalkerState::vaddr, ArmISA::TableWalker::WalkerState::vaddr_tainted, and ArmISA::TableWalker::WalkerState::vtcr.
Referenced by processWalkWrapper(), and walk().
|
private |
Definition at line 365 of file table_walker.cc.
References ArmISA::TableWalker::WalkerState::aarch64, ArmISA::TableWalker::WalkerState::asid, currState, curTick(), DPRINTF, ArmISA::TableWalker::WalkerState::el, ArmISA::f, BaseTLB::Translation::finish(), ArmISA::TableWalker::WalkerState::isHyp, ArmISA::TableWalker::WalkerState::isSecure, isStage2, ArmISA::longDescFormatInUse(), ArmISA::TLB::lookup(), ArmISA::TableWalker::WalkerState::mode, nextWalk(), NoFault, numSquashable, pending, pendingChange(), pendingQueue, processWalk(), processWalkAArch64(), processWalkLPAE(), ArmISA::TableWalker::WalkerState::req, Stats::DistBase< Derived, Stor >::sample(), BaseTLB::Translation::squashed(), ArmISA::TableWalker::WalkerState::startTime, statSquashedBefore, statWalkServiceTime, ArmISA::TableWalker::WalkerState::tc, ArmISA::te, tlb, ArmISA::TLB::translateTiming(), ArmISA::TableWalker::WalkerState::transState, ArmISA::TableWalker::WalkerState::vaddr, ArmISA::TableWalker::WalkerState::vaddr_tainted, and ArmISA::TableWalker::WalkerState::vmid.
Referenced by TableWalker().
|
overridevirtual |
Callback to set stat parameters.
This callback is typically used for complex stats (e.g., distributions) that need parameters in addition to a name and a description. Stat names and descriptions should typically be set from the constructor usingo from the constructor using the ADD_STAT macro.
Reimplemented from Stats::Group.
Definition at line 2222 of file table_walker.cc.
References Stats::DataWrap< Derived, InfoProxyType >::desc(), Stats::dist, Stats::DataWrap< Derived, InfoProxyType >::flags(), Stats::VectorBase< Derived, Stor >::init(), Stats::Vector2dBase< Derived, Stor >::init(), Stats::Histogram::init(), Stats::DataWrap< Derived, InfoProxyType >::name(), ArmISA::TableWalker::WalkerState::name(), Stats::nonan, Stats::nozero, Stats::pdf, Stats::Group::regStats(), statPageSizes, statPendingWalks, statRequestOrigin, statSquashedAfter, statSquashedBefore, statWalks, statWalkServiceTime, statWalksLongDescriptor, statWalksLongTerminatedAtLevel, statWalksShortDescriptor, statWalksShortTerminatedAtLevel, statWalkWaitTime, Stats::DataWrapVec< Derived, InfoProxyType >::subname(), Stats::total, and Stats::DataWrapVec2d< Derived, InfoProxyType >::ysubname().
Referenced by haveLargeAsid64().
Definition at line 102 of file table_walker.cc.
References ArmISA::Stage2MMU::getDMAPort(), ArmISA::m, masterId, port, and stage2Mmu.
Referenced by getTlb(), and ArmISA::TLB::setMMU().
|
inline |
Definition at line 915 of file table_walker.hh.
Referenced by ArmISA::TLB::TLB().
|
private |
Definition at line 2193 of file table_walker.cc.
References currState, ArmISA::TableWalker::WalkerState::isSecure, ArmISA::TableWalker::WalkerState::mode, ArmISA::TLB::testWalk(), tlb, and ArmISA::TableWalker::WalkerState::vaddr.
Referenced by doL1Descriptor(), doLongDescriptor(), processWalk(), processWalkAArch64(), and processWalkLPAE().
|
static |
Definition at line 2160 of file table_walker.cc.
References ArmISA::L1, ArmISA::L2, ArmISA::L3, and panic.
Referenced by doLongDescriptor(), and getTlb().
| Fault TableWalker::walk | ( | const RequestPtr & | req, |
| ThreadContext * | tc, | ||
| uint16_t | asid, | ||
| uint8_t | _vmid, | ||
| bool | _isHyp, | ||
| TLB::Mode | mode, | ||
| TLB::Translation * | _trans, | ||
| bool | timing, | ||
| bool | functional, | ||
| bool | secure, | ||
| TLB::ArmTranslationType | tranType, | ||
| bool | _stage2Req | ||
| ) |
Definition at line 191 of file table_walker.cc.
References _haveVirtualization, ArmISA::TableWalker::WalkerState::aarch64, ArmISA::TableWalker::WalkerState::asid, currState, curTick(), DPRINTF, ArmISA::TableWalker::WalkerState::el, ArmISA::EL0, ArmISA::EL1, ArmISA::EL2, ArmISA::EL3, ArmISA::ELIs64(), BaseTLB::Execute, ArmISA::TableWalker::WalkerState::fault, ArmISA::TableWalker::WalkerState::functional, haveSecurity, ArmISA::TableWalker::WalkerState::hcr, ArmISA::TableWalker::WalkerState::htcr, ArmISA::TableWalker::WalkerState::isFetch, ArmISA::TableWalker::WalkerState::isHyp, ArmISA::TableWalker::WalkerState::isSecure, isStage2, ArmISA::TableWalker::WalkerState::isWrite, ArmISA::longDescFormatInUse(), ArmISA::MISCREG_CPSR, ArmISA::MISCREG_HCR, ArmISA::MISCREG_HCR_EL2, ArmISA::MISCREG_HTCR, ArmISA::MISCREG_SCTLR, ArmISA::MISCREG_SCTLR_EL1, ArmISA::MISCREG_SCTLR_EL2, ArmISA::MISCREG_SCTLR_EL3, ArmISA::MISCREG_TCR_EL1, ArmISA::MISCREG_TCR_EL2, ArmISA::MISCREG_TCR_EL3, ArmISA::MISCREG_TTBCR, ArmISA::MISCREG_VTCR, ArmISA::MISCREG_VTCR_EL2, ArmISA::TableWalker::WalkerState::mode, NoFault, panic, pending, pendingChange(), pendingQueue, ArmISA::TableWalker::WalkerState::physAddrRange, processWalk(), processWalkAArch64(), processWalkLPAE(), ArmISA::purifyTaggedAddr(), ArmISA::TableWalker::WalkerState::pxnTable, ThreadContext::readMiscReg(), ArmISA::TableWalker::WalkerState::req, REQUESTED, ArmISA::TableWalker::WalkerState::rwTable, ArmISA::TableWalker::WalkerState::sctlr, ArmISA::TableWalker::WalkerState::secureLookup, ArmISA::snsBankedIndex(), ArmISA::TableWalker::WalkerState::stage2Req, ArmISA::TableWalker::WalkerState::startTime, statRequestOrigin, statSquashedBefore, statWalks, statWalksLongDescriptor, statWalksShortDescriptor, ArmISA::TableWalker::WalkerState::tableWalker, ArmISA::TableWalker::WalkerState::tc, ArmISA::TableWalker::WalkerState::tcr, ArmISA::TableWalker::WalkerState::timing, ArmISA::TableWalker::WalkerState::transState, ArmISA::TableWalker::WalkerState::tranType, ArmISA::TLB::tranTypeEL(), ArmISA::TableWalker::WalkerState::ttbcr, ArmISA::TableWalker::WalkerState::userTable, ArmISA::TableWalker::WalkerState::vaddr, ArmISA::TableWalker::WalkerState::vaddr_tainted, ArmISA::TableWalker::WalkerState::vmid, ArmISA::TableWalker::WalkerState::vtcr, ArmISA::TableWalker::WalkerState::WalkerState(), BaseTLB::Write, and ArmISA::TableWalker::WalkerState::xnTable.
Referenced by ArmISA::TLB::getTE(), and haveLargeAsid64().
|
protected |
Definition at line 861 of file table_walker.hh.
Referenced by haveLargeAsid64(), and TableWalker().
|
protected |
Definition at line 858 of file table_walker.hh.
Referenced by haveLPAE(), memAttrsLPAE(), and TableWalker().
|
protected |
Definition at line 859 of file table_walker.hh.
Referenced by haveVirtualization(), TableWalker(), and walk().
|
staticprotected |
Definition at line 881 of file table_walker.hh.
Referenced by insertTableEntry().
|
protected |
Definition at line 847 of file table_walker.hh.
Referenced by doL1Descriptor(), doL1DescriptorWrapper(), doL2Descriptor(), doL2DescriptorWrapper(), doLongDescriptor(), doLongDescriptorWrapper(), drainResume(), fetchDescriptor(), generateLongDescFault(), insertTableEntry(), memAttrs(), memAttrsAArch64(), memAttrsLPAE(), pendingChange(), processWalk(), processWalkAArch64(), processWalkLPAE(), processWalkWrapper(), testWalk(), and walk().
|
private |
Definition at line 940 of file table_walker.hh.
Referenced by TableWalker().
|
private |
Definition at line 931 of file table_walker.hh.
Referenced by processWalk().
|
private |
Definition at line 942 of file table_walker.hh.
Referenced by TableWalker().
|
private |
Definition at line 935 of file table_walker.hh.
Referenced by doL1Descriptor(), and TableWalker().
|
private |
Definition at line 944 of file table_walker.hh.
Referenced by TableWalker().
|
private |
Definition at line 946 of file table_walker.hh.
Referenced by TableWalker().
|
private |
Definition at line 967 of file table_walker.hh.
Referenced by nextWalk(), and TableWalker().
|
protected |
Cached copies of system-level properties.
Definition at line 857 of file table_walker.hh.
Referenced by insertTableEntry(), processWalk(), TableWalker(), and walk().
|
protected |
Indicates whether this table walker is part of the stage 2 mmu.
Definition at line 839 of file table_walker.hh.
Referenced by doL1Descriptor(), doL2Descriptor(), generateLongDescFault(), getPort(), insertTableEntry(), memAttrsAArch64(), memAttrsLPAE(), processWalk(), processWalkAArch64(), processWalkLPAE(), processWalkWrapper(), and walk().
|
private |
Definition at line 949 of file table_walker.hh.
Referenced by doLongDescriptor(), processWalkAArch64(), processWalkLPAE(), and TableWalker().
|
protected |
Master id assigned by the MMU.
Definition at line 836 of file table_walker.hh.
Referenced by fetchDescriptor(), and setMMU().
|
protected |
The number of walks belonging to squashed instructions that can be removed from the pendingQueue per cycle.
Definition at line 854 of file table_walker.hh.
Referenced by processWalkWrapper().
|
protected |
If a timing translation is currently in progress.
Definition at line 850 of file table_walker.hh.
Referenced by doL1DescriptorWrapper(), doL2DescriptorWrapper(), doLongDescriptorWrapper(), processWalk(), processWalkAArch64(), processWalkLPAE(), processWalkWrapper(), and walk().
|
mutableprotected |
Definition at line 878 of file table_walker.hh.
Referenced by pendingChange().
|
protected |
Queue of requests that have passed are waiting because the walker is currently busy.
Definition at line 827 of file table_walker.hh.
Referenced by completeDrain(), drain(), nextWalk(), pendingChange(), processWalkWrapper(), and walk().
|
mutableprotected |
Definition at line 877 of file table_walker.hh.
Referenced by pendingChange().
|
protected |
Definition at line 860 of file table_walker.hh.
Referenced by TableWalker().
|
protected |
Port shared by the two table walkers.
Definition at line 833 of file table_walker.hh.
Referenced by fetchDescriptor(), getPort(), init(), and setMMU().
|
staticprotected |
Definition at line 880 of file table_walker.hh.
Referenced by walk().
|
protected |
Cached copy of the sctlr as it existed when translation began.
Definition at line 845 of file table_walker.hh.
Referenced by TableWalker().
|
protected |
The MMU to forward second stage look upts to.
Definition at line 830 of file table_walker.hh.
Referenced by fetchDescriptor(), init(), and setMMU().
|
protected |
Queues of requests for all the different lookup levels.
Definition at line 823 of file table_walker.hh.
Referenced by completeDrain(), doL1DescriptorWrapper(), doL2DescriptorWrapper(), doLongDescriptorWrapper(), drain(), and fetchDescriptor().
|
protected |
Definition at line 874 of file table_walker.hh.
Referenced by insertTableEntry(), and regStats().
|
protected |
Definition at line 873 of file table_walker.hh.
Referenced by pendingChange(), and regStats().
|
protected |
Definition at line 875 of file table_walker.hh.
Referenced by insertTableEntry(), regStats(), and walk().
|
protected |
Definition at line 870 of file table_walker.hh.
Referenced by regStats().
|
protected |
Definition at line 869 of file table_walker.hh.
Referenced by processWalkWrapper(), regStats(), and walk().
|
protected |
|
protected |
Definition at line 872 of file table_walker.hh.
Referenced by doL1DescriptorWrapper(), doL2DescriptorWrapper(), doLongDescriptorWrapper(), processWalkWrapper(), and regStats().
|
protected |
Definition at line 866 of file table_walker.hh.
Referenced by regStats(), and walk().
|
protected |
Definition at line 868 of file table_walker.hh.
Referenced by doLongDescriptorWrapper(), and regStats().
|
protected |
Definition at line 865 of file table_walker.hh.
Referenced by regStats(), and walk().
|
protected |
Definition at line 867 of file table_walker.hh.
Referenced by doL1DescriptorWrapper(), doL2DescriptorWrapper(), and regStats().
|
protected |
Definition at line 871 of file table_walker.hh.
Referenced by processWalk(), processWalkAArch64(), processWalkLPAE(), and regStats().
|
protected |
TLB that is initiating these table walks.
Definition at line 842 of file table_walker.hh.
Referenced by doL1DescriptorWrapper(), doL2DescriptorWrapper(), doLongDescriptorWrapper(), getTlb(), init(), insertTableEntry(), processWalkWrapper(), and testWalk().