gem5 v24.1.0.1
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Public Types | Public Member Functions | Public Attributes | List of all members
gem5::ArmISA::TlbEntry Struct Reference

#include <pagetable.hh>

Inheritance diagram for gem5::ArmISA::TlbEntry:
gem5::ReplaceableEntry gem5::Serializable

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
 
TlbEntryoperator= (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
 
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::ReplacementDatareplacementData
 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.
 

Detailed Description

Definition at line 232 of file pagetable.hh.

Member Typedef Documentation

◆ IndexingPolicy

Definition at line 237 of file pagetable.hh.

◆ KeyType

Definition at line 236 of file pagetable.hh.

◆ LookupLevel

using gem5::ArmISA::TlbEntry::LookupLevel = enums::ArmLookupLevel

Definition at line 235 of file pagetable.hh.

Member Enumeration Documentation

◆ MemoryType

enum class gem5::ArmISA::TlbEntry::MemoryType : std::uint8_t
strong
Enumerator
StronglyOrdered 
Device 
Normal 

Definition at line 239 of file pagetable.hh.

Constructor & Destructor Documentation

◆ TlbEntry() [1/3]

gem5::ArmISA::TlbEntry::TlbEntry ( Addr  _asn,
Addr  _vaddr,
Addr  _paddr,
bool  uncacheable,
bool  read_only 
)
inline

Definition at line 303 of file pagetable.hh.

References warn.

◆ TlbEntry() [2/3]

gem5::ArmISA::TlbEntry::TlbEntry ( )
inline

Definition at line 326 of file pagetable.hh.

◆ TlbEntry() [3/3]

gem5::ArmISA::TlbEntry::TlbEntry ( const TlbEntry rhs)
default

Member Function Documentation

◆ checkRegime()

bool gem5::ArmISA::TlbEntry::checkRegime ( TranslationRegime  target_regime) const
inline

Definition at line 442 of file pagetable.hh.

References regime.

Referenced by match().

◆ insert()

void gem5::ArmISA::TlbEntry::insert ( const KeyType key)
inline

Need for compliance with the AssociativeCache interface.

Definition at line 392 of file pagetable.hh.

◆ invalidate()

void gem5::ArmISA::TlbEntry::invalidate ( )
inline

Need for compliance with the AssociativeCache interface.

Definition at line 386 of file pagetable.hh.

References valid.

◆ isValid()

bool gem5::ArmISA::TlbEntry::isValid ( ) const
inline

Need for compliance with the AssociativeCache interface.

Definition at line 395 of file pagetable.hh.

References valid.

◆ match()

bool gem5::ArmISA::TlbEntry::match ( const KeyType key) const
inline

◆ matchAddress()

bool gem5::ArmISA::TlbEntry::matchAddress ( const KeyType key) const
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().

◆ operator=()

TlbEntry & gem5::ArmISA::TlbEntry::operator= ( TlbEntry  rhs)
inline

Definition at line 344 of file pagetable.hh.

References swap().

◆ pAddr()

Addr gem5::ArmISA::TlbEntry::pAddr ( Addr  va) const
inline

◆ pageStart()

Addr gem5::ArmISA::TlbEntry::pageStart ( ) const
inline

Definition at line 404 of file pagetable.hh.

References gem5::ArmISA::PageShift, and pfn.

◆ print()

std::string gem5::ArmISA::TlbEntry::print ( ) const
inlineoverridevirtual

Prints relevant information about this entry.

Returns
A string containg the contents of 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.

◆ serialize()

void gem5::ArmISA::TlbEntry::serialize ( CheckpointOut cp) const
inlineoverridevirtual

Serialize an object.

Output an object's state into the current checkpoint section.

Parameters
cpCheckpoint 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.

◆ setAttributes()

void gem5::ArmISA::TlbEntry::setAttributes ( bool  lpae)
inline

Definition at line 496 of file pagetable.hh.

References attributes, gem5::ArmISA::lpae, and updateAttributes().

Referenced by gem5::ArmISA::MMU::translateMmuOff().

◆ swap()

void gem5::ArmISA::TlbEntry::swap ( TlbEntry rhs)
inline

◆ unserialize()

void gem5::ArmISA::TlbEntry::unserialize ( CheckpointIn cp)
inlineoverridevirtual

Unserialize an object.

Read an object's state from the current checkpoint section.

Parameters
cpCheckpoint 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.

◆ updateAttributes()

void gem5::ArmISA::TlbEntry::updateAttributes ( )
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().

◆ updateVaddr()

void gem5::ArmISA::TlbEntry::updateVaddr ( Addr  new_vaddr)
inline

Definition at line 398 of file pagetable.hh.

References gem5::ArmISA::PageShift, and vpn.

Member Data Documentation

◆ ap

uint8_t gem5::ArmISA::TlbEntry::ap

◆ asid

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().

◆ attributes

uint64_t gem5::ArmISA::TlbEntry::attributes

◆ domain

DomainType gem5::ArmISA::TlbEntry::domain

Definition at line 265 of file pagetable.hh.

Referenced by serialize(), swap(), and unserialize().

◆ global

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().

◆ hap

uint8_t gem5::ArmISA::TlbEntry::hap

Definition at line 264 of file pagetable.hh.

Referenced by serialize(), swap(), and unserialize().

◆ innerAttrs

uint8_t gem5::ArmISA::TlbEntry::innerAttrs

◆ ipaSpace

PASpace gem5::ArmISA::TlbEntry::ipaSpace

Definition at line 280 of file pagetable.hh.

◆ longDescFormat

bool gem5::ArmISA::TlbEntry::longDescFormat

Definition at line 270 of file pagetable.hh.

Referenced by serialize(), swap(), and unserialize().

◆ lookupLevel

LookupLevel gem5::ArmISA::TlbEntry::lookupLevel

◆ mtype

MemoryType gem5::ArmISA::TlbEntry::mtype

◆ N

uint8_t gem5::ArmISA::TlbEntry::N

◆ nonCacheable

bool gem5::ArmISA::TlbEntry::nonCacheable

Definition at line 290 of file pagetable.hh.

Referenced by gem5::ArmISA::Stage2LookUp::mergeTe(), serialize(), swap(), and unserialize().

◆ ns

bool gem5::ArmISA::TlbEntry::ns

◆ outerAttrs

uint8_t gem5::ArmISA::TlbEntry::outerAttrs

◆ outerShareable

bool gem5::ArmISA::TlbEntry::outerShareable

◆ partial

bool gem5::ArmISA::TlbEntry::partial

◆ pfn

Addr gem5::ArmISA::TlbEntry::pfn

◆ pxn

bool gem5::ArmISA::TlbEntry::pxn

◆ regime

TranslationRegime gem5::ArmISA::TlbEntry::regime

Definition at line 282 of file pagetable.hh.

Referenced by checkRegime(), gem5::ArmISA::TLB::lookup(), print(), and swap().

◆ shareable

bool gem5::ArmISA::TlbEntry::shareable

◆ size

Addr gem5::ArmISA::TlbEntry::size

◆ ss

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().

◆ tg

GrainSize gem5::ArmISA::TlbEntry::tg

Definition at line 259 of file pagetable.hh.

Referenced by swap().

◆ type

TypeTLB gem5::ArmISA::TlbEntry::type

Definition at line 285 of file pagetable.hh.

Referenced by gem5::ArmISA::TLB::checkPromotion(), serialize(), swap(), and unserialize().

◆ valid

bool gem5::ArmISA::TlbEntry::valid

◆ vmid

vmid_t gem5::ArmISA::TlbEntry::vmid

Definition at line 258 of file pagetable.hh.

Referenced by match(), print(), serialize(), swap(), and unserialize().

◆ vpn

Addr gem5::ArmISA::TlbEntry::vpn

◆ xn

bool gem5::ArmISA::TlbEntry::xn

◆ xs

bool gem5::ArmISA::TlbEntry::xs

The documentation for this struct was generated from the following file:

Generated on Mon Jan 13 2025 04:29:04 for gem5 by doxygen 1.9.8