|
gem5 [DEVELOP-FOR-25.0]
|
#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. | |
Public Member Functions inherited from gem5::ReplaceableEntry | |
| 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. | |
Public Member Functions inherited from gem5::Serializable | |
| 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 |
| uint8_t | piindex |
| 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 |
Public Attributes inherited from gem5::ReplaceableEntry | |
| std::shared_ptr< replacement_policy::ReplacementData > | replacementData |
| Replacement data associated to this entry. | |
Additional Inherited Members | |
Static Public Member Functions inherited from gem5::Serializable | |
| 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. | |
Protected Attributes inherited from gem5::ReplaceableEntry | |
| 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 304 of file pagetable.hh.
References ap, asid, attributes, gem5::ArmISA::Client, domain, gem5::ArmISA::EL10, global, gem5::ArmISA::Grain4KB, hap, innerAttrs, ipaSpace, longDescFormat, lookupLevel, mtype, N, nonCacheable, gem5::ArmISA::NonSecure, ns, outerAttrs, outerShareable, gem5::ArmISA::PageBytes, gem5::ArmISA::PageShift, partial, pfn, piindex, pxn, regime, shareable, size, ss, StronglyOrdered, tg, type, valid, vmid, vpn, warn, xn, and xs.
Referenced by operator=(), swap(), and TlbEntry().
|
inline |
Definition at line 328 of file pagetable.hh.
References ap, asid, attributes, gem5::ArmISA::Client, domain, gem5::ArmISA::EL10, global, hap, innerAttrs, ipaSpace, longDescFormat, lookupLevel, mtype, N, nonCacheable, gem5::ArmISA::NonSecure, ns, outerAttrs, outerShareable, partial, pfn, piindex, pxn, regime, gem5::ArmISA::ReservedGrain, shareable, size, ss, StronglyOrdered, tg, type, valid, vmid, vpn, xn, and xs.
|
default |
References TlbEntry().
|
inline |
|
inline |
Need for compliance with the AssociativeCache interface.
Definition at line 395 of file pagetable.hh.
|
inline |
Need for compliance with the AssociativeCache interface.
Definition at line 389 of file pagetable.hh.
References valid.
|
inline |
Need for compliance with the AssociativeCache interface.
Definition at line 398 of file pagetable.hh.
References valid.
|
inline |
Definition at line 427 of file pagetable.hh.
References asid, gem5::ArmISA::TLBTypes::KeyType::asn, checkRegime(), global, gem5::ArmISA::TLBTypes::KeyType::ignoreAsn, match(), matchAddress(), ss, gem5::ArmISA::TLBTypes::KeyType::ss, gem5::ArmISA::TLBTypes::KeyType::targetRegime, gem5::ArmISA::useVMID(), valid, vmid, and gem5::ArmISA::TLBTypes::KeyType::vmid.
Referenced by match().
|
inline |
Definition at line 413 of file pagetable.hh.
References N, size, gem5::ArmISA::TLBTypes::KeyType::size, gem5::ArmISA::TLBTypes::KeyType::va, and vpn.
Referenced by match().
Definition at line 346 of file pagetable.hh.
References swap(), and TlbEntry().
Definition at line 451 of file pagetable.hh.
References N, pfn, size, and gem5::ArmISA::va.
Referenced by gem5::ArmISA::TLB::lookup(), and gem5::ArmISA::Stage2LookUp::Stage2LookUp().
|
inline |
Definition at line 407 of file pagetable.hh.
References gem5::ArmISA::PageShift, and pfn.
|
inlineoverridevirtual |
Prints relevant information about this entry.
Reimplemented from gem5::ReplaceableEntry.
Definition at line 506 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 515 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 499 of file pagetable.hh.
References attributes, gem5::ArmISA::lpae, and updateAttributes().
Referenced by gem5::ArmISA::MMU::translateMmuOff().
|
inline |
Definition at line 353 of file pagetable.hh.
References ap, asid, attributes, domain, global, hap, innerAttrs, longDescFormat, lookupLevel, mtype, N, nonCacheable, ns, outerAttrs, outerShareable, partial, pfn, piindex, pxn, regime, shareable, size, ss, tg, TlbEntry(), 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 545 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 457 of file pagetable.hh.
References attributes, innerAttrs, gem5::ArmISA::mask, ns, outerAttrs, outerShareable, and shareable.
Referenced by setAttributes().
|
inline |
Definition at line 401 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(), TlbEntry(), TlbEntry(), 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(), TlbEntry(), TlbEntry(), and unserialize().
| uint64_t gem5::ArmISA::TlbEntry::attributes |
Definition at line 250 of file pagetable.hh.
Referenced by serialize(), setAttributes(), swap(), TlbEntry(), TlbEntry(), gem5::ArmISA::MMU::translateMmuOff(), unserialize(), and updateAttributes().
| DomainType gem5::ArmISA::TlbEntry::domain |
Definition at line 266 of file pagetable.hh.
Referenced by serialize(), swap(), TlbEntry(), TlbEntry(), and unserialize().
| bool gem5::ArmISA::TlbEntry::global |
Definition at line 273 of file pagetable.hh.
Referenced by gem5::ArmISA::TLB::lookup(), match(), print(), serialize(), swap(), TlbEntry(), TlbEntry(), and unserialize().
| uint8_t gem5::ArmISA::TlbEntry::hap |
Definition at line 264 of file pagetable.hh.
Referenced by serialize(), swap(), TlbEntry(), TlbEntry(), and unserialize().
| uint8_t gem5::ArmISA::TlbEntry::innerAttrs |
Definition at line 261 of file pagetable.hh.
Referenced by serialize(), swap(), TlbEntry(), TlbEntry(), gem5::ArmISA::MMU::translateMmuOff(), unserialize(), and updateAttributes().
| PASpace gem5::ArmISA::TlbEntry::ipaSpace |
Definition at line 281 of file pagetable.hh.
Referenced by TlbEntry(), and TlbEntry().
| bool gem5::ArmISA::TlbEntry::longDescFormat |
Definition at line 271 of file pagetable.hh.
Referenced by serialize(), swap(), TlbEntry(), TlbEntry(), and unserialize().
| LookupLevel gem5::ArmISA::TlbEntry::lookupLevel |
Definition at line 252 of file pagetable.hh.
Referenced by gem5::ArmISA::TLB::multiInsert(), serialize(), swap(), TlbEntry(), TlbEntry(), unserialize(), and gem5::ArmISA::TableWalker::walkAddresses().
| MemoryType gem5::ArmISA::TlbEntry::mtype |
Definition at line 268 of file pagetable.hh.
Referenced by serialize(), swap(), TlbEntry(), TlbEntry(), 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(), pAddr(), print(), serialize(), swap(), TlbEntry(), TlbEntry(), and unserialize().
| bool gem5::ArmISA::TlbEntry::nonCacheable |
Definition at line 291 of file pagetable.hh.
Referenced by serialize(), swap(), TlbEntry(), TlbEntry(), and unserialize().
| bool gem5::ArmISA::TlbEntry::ns |
Definition at line 277 of file pagetable.hh.
Referenced by gem5::ArmISA::TLB::lookup(), print(), serialize(), swap(), TlbEntry(), TlbEntry(), gem5::ArmISA::MMU::translateMmuOff(), unserialize(), and updateAttributes().
| uint8_t gem5::ArmISA::TlbEntry::outerAttrs |
Definition at line 262 of file pagetable.hh.
Referenced by serialize(), swap(), TlbEntry(), TlbEntry(), gem5::ArmISA::MMU::translateMmuOff(), unserialize(), and updateAttributes().
| bool gem5::ArmISA::TlbEntry::outerShareable |
Definition at line 295 of file pagetable.hh.
Referenced by serialize(), swap(), TlbEntry(), TlbEntry(), gem5::ArmISA::MMU::translateMmuOff(), unserialize(), and updateAttributes().
| bool gem5::ArmISA::TlbEntry::partial |
Definition at line 288 of file pagetable.hh.
Referenced by gem5::ArmISA::MMU::isCompleteTranslation(), gem5::ArmISA::TLB::lookup(), gem5::ArmISA::TLB::multiInsert(), swap(), TlbEntry(), and TlbEntry().
| Addr gem5::ArmISA::TlbEntry::pfn |
Definition at line 247 of file pagetable.hh.
Referenced by gem5::ArmISA::TLB::lookup(), pAddr(), pageStart(), print(), serialize(), swap(), TlbEntry(), TlbEntry(), unserialize(), and gem5::ArmISA::TableWalker::walkAddresses().
| uint8_t gem5::ArmISA::TlbEntry::piindex |
Definition at line 265 of file pagetable.hh.
Referenced by gem5::ArmISA::TLB::lookup(), swap(), TlbEntry(), and TlbEntry().
| bool gem5::ArmISA::TlbEntry::pxn |
Definition at line 299 of file pagetable.hh.
Referenced by serialize(), swap(), TlbEntry(), TlbEntry(), unserialize(), and gem5::ArmISA::TableWalker::walkAddresses().
| TranslationRegime gem5::ArmISA::TlbEntry::regime |
Definition at line 283 of file pagetable.hh.
Referenced by checkRegime(), gem5::ArmISA::TLB::lookup(), print(), swap(), TlbEntry(), and TlbEntry().
| bool gem5::ArmISA::TlbEntry::shareable |
Definition at line 294 of file pagetable.hh.
Referenced by serialize(), swap(), TlbEntry(), TlbEntry(), 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(), pAddr(), print(), serialize(), swap(), TlbEntry(), TlbEntry(), and unserialize().
| SecurityState gem5::ArmISA::TlbEntry::ss |
Definition at line 279 of file pagetable.hh.
Referenced by gem5::ArmISA::TLB::lookup(), match(), print(), serialize(), swap(), TlbEntry(), TlbEntry(), and unserialize().
| GrainSize gem5::ArmISA::TlbEntry::tg |
Definition at line 259 of file pagetable.hh.
Referenced by swap(), TlbEntry(), and TlbEntry().
| TypeTLB gem5::ArmISA::TlbEntry::type |
Definition at line 286 of file pagetable.hh.
Referenced by gem5::ArmISA::TLB::checkPromotion(), serialize(), swap(), TlbEntry(), TlbEntry(), and unserialize().
| bool gem5::ArmISA::TlbEntry::valid |
Definition at line 274 of file pagetable.hh.
Referenced by invalidate(), isValid(), match(), serialize(), swap(), TlbEntry(), TlbEntry(), and unserialize().
| vmid_t gem5::ArmISA::TlbEntry::vmid |
Definition at line 258 of file pagetable.hh.
Referenced by match(), print(), serialize(), swap(), TlbEntry(), TlbEntry(), and unserialize().
| Addr gem5::ArmISA::TlbEntry::vpn |
Definition at line 249 of file pagetable.hh.
Referenced by matchAddress(), print(), serialize(), swap(), TlbEntry(), TlbEntry(), unserialize(), and updateVaddr().
| bool gem5::ArmISA::TlbEntry::xn |
Definition at line 298 of file pagetable.hh.
Referenced by serialize(), swap(), TlbEntry(), TlbEntry(), unserialize(), and gem5::ArmISA::TableWalker::walkAddresses().
| bool gem5::ArmISA::TlbEntry::xs |
Definition at line 301 of file pagetable.hh.
Referenced by gem5::ArmISA::TLB::lookup(), print(), swap(), TlbEntry(), and TlbEntry().