|
gem5 [DEVELOP-FOR-25.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. | |
| 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 234 of file pagetable.hh.
Definition at line 239 of file pagetable.hh.
Definition at line 238 of file pagetable.hh.
| using gem5::ArmISA::TlbEntry::LookupLevel = enums::ArmLookupLevel |
Definition at line 237 of file pagetable.hh.
|
strong |
| Enumerator | |
|---|---|
| StronglyOrdered | |
| Device | |
| Normal | |
Definition at line 241 of file pagetable.hh.
|
inline |
Definition at line 306 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 330 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 397 of file pagetable.hh.
|
inline |
Need for compliance with the AssociativeCache interface.
Definition at line 391 of file pagetable.hh.
References valid.
|
inline |
Need for compliance with the AssociativeCache interface.
Definition at line 400 of file pagetable.hh.
References valid.
|
inline |
Definition at line 429 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 415 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 348 of file pagetable.hh.
References swap(), and TlbEntry().
Definition at line 453 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 409 of file pagetable.hh.
References gem5::ArmISA::PageShift, and pfn.
|
inlineoverridevirtual |
Prints relevant information about this entry.
Reimplemented from gem5::ReplaceableEntry.
Definition at line 508 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 517 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 501 of file pagetable.hh.
References attributes, gem5::ArmISA::lpae, and updateAttributes().
Referenced by gem5::ArmISA::MMU::translateMmuOff().
|
inline |
Definition at line 355 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 547 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 459 of file pagetable.hh.
References attributes, innerAttrs, gem5::ArmISA::mask, ns, outerAttrs, outerShareable, and shareable.
Referenced by setAttributes().
|
inline |
Definition at line 403 of file pagetable.hh.
References gem5::ArmISA::PageShift, and vpn.
| uint8_t gem5::ArmISA::TlbEntry::ap |
Definition at line 265 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 259 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 252 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 268 of file pagetable.hh.
Referenced by serialize(), swap(), TlbEntry(), TlbEntry(), and unserialize().
| bool gem5::ArmISA::TlbEntry::global |
Definition at line 275 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 266 of file pagetable.hh.
Referenced by serialize(), swap(), TlbEntry(), TlbEntry(), and unserialize().
| uint8_t gem5::ArmISA::TlbEntry::innerAttrs |
Definition at line 263 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 283 of file pagetable.hh.
Referenced by TlbEntry(), and TlbEntry().
| bool gem5::ArmISA::TlbEntry::longDescFormat |
Definition at line 273 of file pagetable.hh.
Referenced by serialize(), swap(), TlbEntry(), TlbEntry(), and unserialize().
| LookupLevel gem5::ArmISA::TlbEntry::lookupLevel |
Definition at line 254 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 270 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 262 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 293 of file pagetable.hh.
Referenced by serialize(), swap(), TlbEntry(), TlbEntry(), and unserialize().
| bool gem5::ArmISA::TlbEntry::ns |
Definition at line 279 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 264 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 297 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 290 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 249 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 267 of file pagetable.hh.
Referenced by gem5::ArmISA::TLB::lookup(), swap(), TlbEntry(), and TlbEntry().
| bool gem5::ArmISA::TlbEntry::pxn |
Definition at line 301 of file pagetable.hh.
Referenced by serialize(), swap(), TlbEntry(), TlbEntry(), unserialize(), and gem5::ArmISA::TableWalker::walkAddresses().
| TranslationRegime gem5::ArmISA::TlbEntry::regime |
Definition at line 285 of file pagetable.hh.
Referenced by checkRegime(), gem5::ArmISA::TLB::lookup(), print(), swap(), TlbEntry(), and TlbEntry().
| bool gem5::ArmISA::TlbEntry::shareable |
Definition at line 296 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 250 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 281 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 261 of file pagetable.hh.
Referenced by swap(), TlbEntry(), and TlbEntry().
| TypeTLB gem5::ArmISA::TlbEntry::type |
Definition at line 288 of file pagetable.hh.
Referenced by gem5::ArmISA::TLB::checkPromotion(), serialize(), swap(), TlbEntry(), TlbEntry(), and unserialize().
| bool gem5::ArmISA::TlbEntry::valid |
Definition at line 276 of file pagetable.hh.
Referenced by invalidate(), isValid(), match(), serialize(), swap(), TlbEntry(), TlbEntry(), and unserialize().
| vmid_t gem5::ArmISA::TlbEntry::vmid |
Definition at line 260 of file pagetable.hh.
Referenced by match(), print(), serialize(), swap(), TlbEntry(), TlbEntry(), and unserialize().
| Addr gem5::ArmISA::TlbEntry::vpn |
Definition at line 251 of file pagetable.hh.
Referenced by matchAddress(), print(), serialize(), swap(), TlbEntry(), TlbEntry(), unserialize(), and updateVaddr().
| bool gem5::ArmISA::TlbEntry::xn |
Definition at line 300 of file pagetable.hh.
Referenced by serialize(), swap(), TlbEntry(), TlbEntry(), unserialize(), and gem5::ArmISA::TableWalker::walkAddresses().
| bool gem5::ArmISA::TlbEntry::xs |
Definition at line 303 of file pagetable.hh.
Referenced by gem5::ArmISA::TLB::lookup(), print(), swap(), TlbEntry(), and TlbEntry().