gem5 v24.1.0.1
|
#include <pagetable.hh>
Public Types | |
enum class | MemoryType : std::uint8_t { StronglyOrdered , Device , Normal } |
using | LookupLevel = enums::ArmLookupLevel |
using | KeyType = TLBTypes::KeyType |
using | IndexingPolicy = TLBIndexingPolicy |
Public Member Functions | |
TlbEntry (Addr _asn, Addr _vaddr, Addr _paddr, bool uncacheable, bool read_only) | |
TlbEntry () | |
TlbEntry (const TlbEntry &rhs)=default | |
TlbEntry & | operator= (TlbEntry rhs) |
void | swap (TlbEntry &rhs) |
void | invalidate () |
Need for compliance with the AssociativeCache interface. | |
void | insert (const KeyType &key) |
Need for compliance with the AssociativeCache interface. | |
bool | isValid () const |
Need for compliance with the AssociativeCache interface. | |
void | updateVaddr (Addr new_vaddr) |
Addr | pageStart () const |
bool | matchAddress (const KeyType &key) const |
bool | match (const KeyType &key) const |
bool | checkRegime (TranslationRegime target_regime) const |
Addr | pAddr (Addr va) const |
void | updateAttributes () |
void | setAttributes (bool lpae) |
std::string | print () const override |
Prints relevant information about this entry. | |
void | serialize (CheckpointOut &cp) const override |
Serialize an object. | |
void | unserialize (CheckpointIn &cp) override |
Unserialize an object. | |
![]() | |
ReplaceableEntry () | |
virtual | ~ReplaceableEntry ()=default |
virtual void | setPosition (const uint32_t set, const uint32_t way) |
Set both the set and way. | |
uint32_t | getSet () const |
Get set number. | |
uint32_t | getWay () const |
Get way number. | |
![]() | |
Serializable () | |
virtual | ~Serializable () |
void | serializeSection (CheckpointOut &cp, const char *name) const |
Serialize an object into a new section. | |
void | serializeSection (CheckpointOut &cp, const std::string &name) const |
void | unserializeSection (CheckpointIn &cp, const char *name) |
Unserialize an a child object. | |
void | unserializeSection (CheckpointIn &cp, const std::string &name) |
Public Attributes | |
Addr | pfn |
Addr | size |
Addr | vpn |
uint64_t | attributes |
LookupLevel | lookupLevel |
uint16_t | asid |
vmid_t | vmid |
GrainSize | tg |
uint8_t | N |
uint8_t | innerAttrs |
uint8_t | outerAttrs |
uint8_t | ap |
uint8_t | hap |
DomainType | domain |
MemoryType | mtype |
bool | longDescFormat |
bool | global |
bool | valid |
bool | ns |
SecurityState | ss |
PASpace | ipaSpace |
TranslationRegime | regime |
TypeTLB | type |
bool | partial |
bool | nonCacheable |
bool | shareable |
bool | outerShareable |
bool | xn |
bool | pxn |
bool | xs |
![]() | |
std::shared_ptr< replacement_policy::ReplacementData > | replacementData |
Replacement data associated to this entry. | |
Additional Inherited Members | |
![]() | |
static const std::string & | currentSection () |
Gets the fully-qualified name of the active section. | |
static void | generateCheckpointOut (const std::string &cpt_dir, std::ofstream &outstream) |
Generate a checkpoint file so that the serialization can be routed to it. | |
![]() | |
uint32_t | _set |
Set to which this entry belongs. | |
uint32_t | _way |
Way (relative position within the set) to which this entry belongs. | |
Definition at line 232 of file pagetable.hh.
Definition at line 237 of file pagetable.hh.
Definition at line 236 of file pagetable.hh.
using gem5::ArmISA::TlbEntry::LookupLevel = enums::ArmLookupLevel |
Definition at line 235 of file pagetable.hh.
|
strong |
Enumerator | |
---|---|
StronglyOrdered | |
Device | |
Normal |
Definition at line 239 of file pagetable.hh.
|
inline |
Definition at line 303 of file pagetable.hh.
References warn.
|
inline |
Definition at line 326 of file pagetable.hh.
|
default |
|
inline |
|
inline |
Need for compliance with the AssociativeCache interface.
Definition at line 392 of file pagetable.hh.
|
inline |
Need for compliance with the AssociativeCache interface.
Definition at line 386 of file pagetable.hh.
References valid.
|
inline |
Need for compliance with the AssociativeCache interface.
Definition at line 395 of file pagetable.hh.
References valid.
|
inline |
Definition at line 424 of file pagetable.hh.
References asid, gem5::ArmISA::TLBTypes::KeyType::asn, checkRegime(), global, gem5::ArmISA::TLBTypes::KeyType::ignoreAsn, match(), matchAddress(), gem5::ArmISA::TLBTypes::KeyType::ss, ss, gem5::ArmISA::TLBTypes::KeyType::targetRegime, gem5::ArmISA::useVMID(), valid, gem5::ArmISA::TLBTypes::KeyType::vmid, and vmid.
Referenced by match().
|
inline |
Definition at line 410 of file pagetable.hh.
References N, gem5::ArmISA::TLBTypes::KeyType::size, size, gem5::ArmISA::TLBTypes::KeyType::va, and vpn.
Referenced by match().
Definition at line 344 of file pagetable.hh.
References swap().
Definition at line 448 of file pagetable.hh.
References N, pfn, size, and gem5::ArmISA::va.
Referenced by gem5::ArmISA::TLB::lookup(), gem5::ArmISA::Stage2LookUp::Stage2LookUp(), and gem5::ArmISA::MMU::translateFunctional().
|
inline |
Definition at line 404 of file pagetable.hh.
References gem5::ArmISA::PageShift, and pfn.
|
inlineoverridevirtual |
Prints relevant information about this entry.
Reimplemented from gem5::ReplaceableEntry.
Definition at line 503 of file pagetable.hh.
References ap, asid, gem5::csprintf(), global, N, ns, pfn, regime, gem5::ArmISA::regimeToStr(), size, ss, vmid, vpn, and xs.
|
inlineoverridevirtual |
Serialize an object.
Output an object's state into the current checkpoint section.
cp | Checkpoint state |
Implements gem5::Serializable.
Definition at line 512 of file pagetable.hh.
References ap, asid, attributes, domain, global, hap, innerAttrs, longDescFormat, lookupLevel, mtype, N, nonCacheable, ns, outerAttrs, outerShareable, gem5::paramOut(), pfn, pxn, SERIALIZE_ENUM, SERIALIZE_SCALAR, shareable, size, ss, type, valid, vmid, vpn, and xn.
|
inline |
Definition at line 496 of file pagetable.hh.
References attributes, gem5::ArmISA::lpae, and updateAttributes().
Referenced by gem5::ArmISA::MMU::translateMmuOff().
|
inline |
Definition at line 351 of file pagetable.hh.
References ap, asid, attributes, domain, global, hap, innerAttrs, longDescFormat, lookupLevel, mtype, N, nonCacheable, ns, outerAttrs, outerShareable, partial, pfn, pxn, regime, shareable, size, ss, tg, type, valid, vmid, vpn, xn, and xs.
Referenced by operator=().
|
inlineoverridevirtual |
Unserialize an object.
Read an object's state from the current checkpoint section.
cp | Checkpoint state |
Implements gem5::Serializable.
Definition at line 542 of file pagetable.hh.
References ap, asid, attributes, domain, global, hap, innerAttrs, longDescFormat, lookupLevel, mtype, N, nonCacheable, ns, outerAttrs, outerShareable, gem5::paramIn(), pfn, pxn, shareable, size, ss, type, UNSERIALIZE_ENUM, UNSERIALIZE_SCALAR, valid, vmid, vpn, and xn.
|
inline |
Formatting for Physical Address Register (PAR) Only including lower bits (TLB info here) PAR (32-bit format): PA [31:12] LPAE [11] (Large Physical Address Extension) TLB info [10:1] NOS [10] (Not Outer Sharable) NS [9] (Non-Secure) – [8] (Implementation Defined) SH [7] (Sharable) Inner[6:4](Inner memory attributes) Outer[3:2](Outer memory attributes) SS [1] (SuperSection) F [0] (Fault, Fault Status in [6:1] if faulted)
Definition at line 454 of file pagetable.hh.
References attributes, innerAttrs, gem5::ArmISA::mask, ns, outerAttrs, outerShareable, and shareable.
Referenced by gem5::ArmISA::Stage2LookUp::mergeTe(), and setAttributes().
|
inline |
Definition at line 398 of file pagetable.hh.
References gem5::ArmISA::PageShift, and vpn.
uint8_t gem5::ArmISA::TlbEntry::ap |
Definition at line 263 of file pagetable.hh.
Referenced by gem5::ArmISA::TLB::lookup(), print(), serialize(), swap(), unserialize(), and gem5::ArmISA::TableWalker::walkAddresses().
uint16_t gem5::ArmISA::TlbEntry::asid |
Definition at line 257 of file pagetable.hh.
Referenced by gem5::ArmISA::TLB::lookup(), match(), print(), serialize(), swap(), and unserialize().
uint64_t gem5::ArmISA::TlbEntry::attributes |
Definition at line 250 of file pagetable.hh.
Referenced by serialize(), setAttributes(), swap(), gem5::ArmISA::MMU::translateMmuOff(), unserialize(), and updateAttributes().
DomainType gem5::ArmISA::TlbEntry::domain |
Definition at line 265 of file pagetable.hh.
Referenced by serialize(), swap(), and unserialize().
bool gem5::ArmISA::TlbEntry::global |
Definition at line 272 of file pagetable.hh.
Referenced by gem5::ArmISA::TLB::lookup(), match(), print(), serialize(), swap(), and unserialize().
uint8_t gem5::ArmISA::TlbEntry::hap |
Definition at line 264 of file pagetable.hh.
Referenced by serialize(), swap(), and unserialize().
uint8_t gem5::ArmISA::TlbEntry::innerAttrs |
Definition at line 261 of file pagetable.hh.
Referenced by gem5::ArmISA::Stage2LookUp::mergeTe(), serialize(), swap(), gem5::ArmISA::MMU::translateMmuOff(), unserialize(), and updateAttributes().
PASpace gem5::ArmISA::TlbEntry::ipaSpace |
Definition at line 280 of file pagetable.hh.
bool gem5::ArmISA::TlbEntry::longDescFormat |
Definition at line 270 of file pagetable.hh.
Referenced by serialize(), swap(), and unserialize().
LookupLevel gem5::ArmISA::TlbEntry::lookupLevel |
Definition at line 252 of file pagetable.hh.
Referenced by gem5::ArmISA::TLB::multiInsert(), serialize(), swap(), unserialize(), and gem5::ArmISA::TableWalker::walkAddresses().
MemoryType gem5::ArmISA::TlbEntry::mtype |
Definition at line 267 of file pagetable.hh.
Referenced by gem5::ArmISA::Stage2LookUp::mergeTe(), serialize(), swap(), gem5::ArmISA::MMU::translateMmuOff(), and unserialize().
uint8_t gem5::ArmISA::TlbEntry::N |
Definition at line 260 of file pagetable.hh.
Referenced by gem5::ArmISA::TLB::insert(), matchAddress(), gem5::ArmISA::Stage2LookUp::mergeTe(), pAddr(), print(), serialize(), swap(), and unserialize().
bool gem5::ArmISA::TlbEntry::nonCacheable |
Definition at line 290 of file pagetable.hh.
Referenced by gem5::ArmISA::Stage2LookUp::mergeTe(), serialize(), swap(), and unserialize().
bool gem5::ArmISA::TlbEntry::ns |
Definition at line 276 of file pagetable.hh.
Referenced by gem5::ArmISA::TLB::lookup(), print(), serialize(), swap(), gem5::ArmISA::MMU::translateMmuOff(), unserialize(), and updateAttributes().
uint8_t gem5::ArmISA::TlbEntry::outerAttrs |
Definition at line 262 of file pagetable.hh.
Referenced by gem5::ArmISA::Stage2LookUp::mergeTe(), serialize(), swap(), gem5::ArmISA::MMU::translateMmuOff(), unserialize(), and updateAttributes().
bool gem5::ArmISA::TlbEntry::outerShareable |
Definition at line 294 of file pagetable.hh.
Referenced by gem5::ArmISA::Stage2LookUp::mergeTe(), serialize(), swap(), gem5::ArmISA::MMU::translateMmuOff(), unserialize(), and updateAttributes().
bool gem5::ArmISA::TlbEntry::partial |
Definition at line 287 of file pagetable.hh.
Referenced by gem5::ArmISA::MMU::isCompleteTranslation(), gem5::ArmISA::TLB::lookup(), gem5::ArmISA::TLB::multiInsert(), and swap().
Addr gem5::ArmISA::TlbEntry::pfn |
Definition at line 247 of file pagetable.hh.
Referenced by gem5::ArmISA::TLB::lookup(), gem5::ArmISA::Stage2LookUp::mergeTe(), pAddr(), pageStart(), print(), serialize(), swap(), unserialize(), and gem5::ArmISA::TableWalker::walkAddresses().
bool gem5::ArmISA::TlbEntry::pxn |
Definition at line 298 of file pagetable.hh.
Referenced by serialize(), swap(), unserialize(), and gem5::ArmISA::TableWalker::walkAddresses().
TranslationRegime gem5::ArmISA::TlbEntry::regime |
Definition at line 282 of file pagetable.hh.
Referenced by checkRegime(), gem5::ArmISA::TLB::lookup(), print(), and swap().
bool gem5::ArmISA::TlbEntry::shareable |
Definition at line 293 of file pagetable.hh.
Referenced by gem5::ArmISA::Stage2LookUp::mergeTe(), serialize(), swap(), gem5::ArmISA::MMU::translateMmuOff(), unserialize(), and updateAttributes().
Addr gem5::ArmISA::TlbEntry::size |
Definition at line 248 of file pagetable.hh.
Referenced by gem5::ArmISA::TLB::lookup(), matchAddress(), gem5::ArmISA::Stage2LookUp::mergeTe(), pAddr(), print(), serialize(), swap(), and unserialize().
SecurityState gem5::ArmISA::TlbEntry::ss |
Definition at line 278 of file pagetable.hh.
Referenced by gem5::ArmISA::TLB::lookup(), match(), print(), serialize(), swap(), and unserialize().
GrainSize gem5::ArmISA::TlbEntry::tg |
Definition at line 259 of file pagetable.hh.
Referenced by swap().
TypeTLB gem5::ArmISA::TlbEntry::type |
Definition at line 285 of file pagetable.hh.
Referenced by gem5::ArmISA::TLB::checkPromotion(), serialize(), swap(), and unserialize().
bool gem5::ArmISA::TlbEntry::valid |
Definition at line 273 of file pagetable.hh.
Referenced by gem5::ArmISA::TableWalker::insertPartialTableEntry(), gem5::ArmISA::TableWalker::insertTableEntry(), invalidate(), isValid(), match(), serialize(), swap(), unserialize(), and gem5::ArmISA::TableWalker::walkAddresses().
vmid_t gem5::ArmISA::TlbEntry::vmid |
Definition at line 258 of file pagetable.hh.
Referenced by match(), print(), serialize(), swap(), and unserialize().
Addr gem5::ArmISA::TlbEntry::vpn |
Definition at line 249 of file pagetable.hh.
Referenced by matchAddress(), gem5::ArmISA::Stage2LookUp::mergeTe(), print(), serialize(), swap(), unserialize(), and updateVaddr().
bool gem5::ArmISA::TlbEntry::xn |
Definition at line 297 of file pagetable.hh.
Referenced by gem5::ArmISA::Stage2LookUp::mergeTe(), serialize(), swap(), unserialize(), and gem5::ArmISA::TableWalker::walkAddresses().
bool gem5::ArmISA::TlbEntry::xs |
Definition at line 300 of file pagetable.hh.
Referenced by gem5::ArmISA::TLB::lookup(), gem5::ArmISA::Stage2LookUp::mergeTe(), print(), and swap().