gem5
v20.0.0.2
|
#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 |
![]() | |
typedef ClockedObjectParams | Params |
Parameters of ClockedObject. More... | |
![]() | |
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) |
![]() | |
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... | |
![]() | |
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... | |
const Params * | params () const |
SimObject (const Params *_params) | |
![]() | |
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) |
EventManager (EventManager &em) | |
EventManager (EventManager *em) | |
EventManager (EventQueue *eq) | |
![]() | |
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) |
![]() | |
DrainState | drainState () const |
Return the current drain state of an object. More... | |
virtual void | notifyFork () |
Notify a child process of a fork. More... | |
![]() | |
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... | |
const Info * | resolveStat (std::string name) const |
Resolve a stat by its name within this group. More... | |
Group ()=delete | |
Group (const Group &)=delete | |
Group & | operator= (const Group &)=delete |
![]() | |
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 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 const std::string & | currentSection () |
Gets 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 |
![]() | |
const SimObjectParams * | _params |
Cached copy of the object parameters. More... | |
![]() | |
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 | |
![]() | |
PowerState * | powerState |
![]() | |
Drainable () | |
virtual | ~Drainable () |
void | signalDrainDone () const |
Signal that an object is drained. More... | |
![]() | |
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 61 of file table_walker.hh.
typedef ArmTableWalkerParams ArmISA::TableWalker::Params |
Definition at line 881 of file table_walker.hh.
Enumerator | |
---|---|
Grain4KB | |
Grain16KB | |
Grain64KB | |
ReservedGrain |
Definition at line 367 of file table_walker.hh.
TableWalker::TableWalker | ( | const Params * | p | ) |
Definition at line 56 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 93 of file table_walker.cc.
|
staticprivate |
Definition at line 734 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 744 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 144 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 1914 of file table_walker.cc.
References doLongDescriptorWrapper(), and ArmISA::L0.
Referenced by TableWalker().
|
private |
Definition at line 1474 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 1817 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 1920 of file table_walker.cc.
References doLongDescriptorWrapper(), and ArmISA::L1.
Referenced by TableWalker().
|
private |
Definition at line 1761 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 1873 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 1926 of file table_walker.cc.
References doLongDescriptorWrapper(), and ArmISA::L2.
Referenced by TableWalker().
|
private |
Definition at line 1932 of file table_walker.cc.
References doLongDescriptorWrapper(), and ArmISA::L3.
Referenced by TableWalker().
|
private |
Definition at line 1599 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 1938 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 157 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 178 of file table_walker.cc.
References currState, params(), and pendingChange().
Referenced by haveLargeAsid64().
|
private |
Definition at line 2003 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, 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 1579 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 115 of file table_walker.cc.
References fatal, SimObject::getPort(), isStage2, and port.
Referenced by haveLargeAsid64().
|
inline |
Definition at line 913 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 895 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 893 of file table_walker.hh.
References _haveLPAE.
Referenced by ArmISA::TLB::TLB().
|
inline |
Definition at line 894 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 107 of file table_walker.cc.
References fatal_if, port, stage2Mmu, and tlb.
Referenced by params().
|
private |
Definition at line 2075 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 1042 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 1375 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 1249 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 1994 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 2198 of file table_walker.cc.
References panic.
Referenced by insertTableEntry().
|
inline |
Definition at line 886 of file table_walker.hh.
References SimObject::_params, and init().
Referenced by drainResume().
|
private |
Definition at line 2173 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 453 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 751 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 562 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 362 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 2218 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 99 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 912 of file table_walker.hh.
Referenced by ArmISA::TLB::TLB().
|
private |
Definition at line 2189 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 2156 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 188 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 858 of file table_walker.hh.
Referenced by haveLargeAsid64(), and TableWalker().
|
protected |
Definition at line 855 of file table_walker.hh.
Referenced by haveLPAE(), memAttrsLPAE(), and TableWalker().
|
protected |
Definition at line 856 of file table_walker.hh.
Referenced by haveVirtualization(), TableWalker(), and walk().
|
staticprotected |
Definition at line 878 of file table_walker.hh.
Referenced by insertTableEntry().
|
protected |
Definition at line 844 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 937 of file table_walker.hh.
Referenced by TableWalker().
|
private |
Definition at line 928 of file table_walker.hh.
Referenced by processWalk().
|
private |
Definition at line 939 of file table_walker.hh.
Referenced by TableWalker().
|
private |
Definition at line 932 of file table_walker.hh.
Referenced by doL1Descriptor(), and TableWalker().
|
private |
Definition at line 941 of file table_walker.hh.
Referenced by TableWalker().
|
private |
Definition at line 943 of file table_walker.hh.
Referenced by TableWalker().
|
private |
Definition at line 964 of file table_walker.hh.
Referenced by nextWalk(), and TableWalker().
|
protected |
Cached copies of system-level properties.
Definition at line 854 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 836 of file table_walker.hh.
Referenced by doL1Descriptor(), doL2Descriptor(), generateLongDescFault(), getPort(), insertTableEntry(), memAttrsAArch64(), memAttrsLPAE(), processWalk(), processWalkAArch64(), processWalkLPAE(), processWalkWrapper(), and walk().
|
private |
Definition at line 946 of file table_walker.hh.
Referenced by doLongDescriptor(), processWalkAArch64(), processWalkLPAE(), and TableWalker().
|
protected |
Master id assigned by the MMU.
Definition at line 833 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 851 of file table_walker.hh.
Referenced by processWalkWrapper().
|
protected |
If a timing translation is currently in progress.
Definition at line 847 of file table_walker.hh.
Referenced by doL1DescriptorWrapper(), doL2DescriptorWrapper(), doLongDescriptorWrapper(), processWalk(), processWalkAArch64(), processWalkLPAE(), processWalkWrapper(), and walk().
|
mutableprotected |
Definition at line 875 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 824 of file table_walker.hh.
Referenced by completeDrain(), drain(), nextWalk(), pendingChange(), processWalkWrapper(), and walk().
|
mutableprotected |
Definition at line 874 of file table_walker.hh.
Referenced by pendingChange().
|
protected |
Definition at line 857 of file table_walker.hh.
Referenced by TableWalker().
|
protected |
Port shared by the two table walkers.
Definition at line 830 of file table_walker.hh.
Referenced by fetchDescriptor(), getPort(), init(), and setMMU().
|
staticprotected |
Definition at line 877 of file table_walker.hh.
Referenced by walk().
|
protected |
Cached copy of the sctlr as it existed when translation began.
Definition at line 842 of file table_walker.hh.
Referenced by TableWalker().
|
protected |
The MMU to forward second stage look upts to.
Definition at line 827 of file table_walker.hh.
Referenced by fetchDescriptor(), init(), and setMMU().
|
protected |
Queues of requests for all the different lookup levels.
Definition at line 820 of file table_walker.hh.
Referenced by completeDrain(), doL1DescriptorWrapper(), doL2DescriptorWrapper(), doLongDescriptorWrapper(), drain(), and fetchDescriptor().
|
protected |
Definition at line 871 of file table_walker.hh.
Referenced by insertTableEntry(), and regStats().
|
protected |
Definition at line 870 of file table_walker.hh.
Referenced by pendingChange(), and regStats().
|
protected |
Definition at line 872 of file table_walker.hh.
Referenced by insertTableEntry(), regStats(), and walk().
|
protected |
Definition at line 867 of file table_walker.hh.
Referenced by regStats().
|
protected |
Definition at line 866 of file table_walker.hh.
Referenced by processWalkWrapper(), regStats(), and walk().
|
protected |
|
protected |
Definition at line 869 of file table_walker.hh.
Referenced by doL1DescriptorWrapper(), doL2DescriptorWrapper(), doLongDescriptorWrapper(), processWalkWrapper(), and regStats().
|
protected |
Definition at line 863 of file table_walker.hh.
Referenced by regStats(), and walk().
|
protected |
Definition at line 865 of file table_walker.hh.
Referenced by doLongDescriptorWrapper(), and regStats().
|
protected |
Definition at line 862 of file table_walker.hh.
Referenced by regStats(), and walk().
|
protected |
Definition at line 864 of file table_walker.hh.
Referenced by doL1DescriptorWrapper(), doL2DescriptorWrapper(), and regStats().
|
protected |
Definition at line 868 of file table_walker.hh.
Referenced by processWalk(), processWalkAArch64(), processWalkLPAE(), and regStats().
|
protected |
TLB that is initiating these table walks.
Definition at line 839 of file table_walker.hh.
Referenced by doL1DescriptorWrapper(), doL2DescriptorWrapper(), doLongDescriptorWrapper(), getTlb(), init(), insertTableEntry(), processWalkWrapper(), and testWalk().