gem5  v22.1.0.0
Classes | Public Types | Public Member Functions | Public Attributes | Static Public Attributes | Private Types | Private Member Functions | Private Attributes | Friends | List of all members
gem5::Gicv3Its Class Reference

GICv3 ITS module. More...

#include <gic_v3_its.hh>

Inheritance diagram for gem5::Gicv3Its:
gem5::BasicPioDevice gem5::PioDevice gem5::ClockedObject gem5::SimObject gem5::Clocked gem5::EventManager gem5::Serializable gem5::Drainable gem5::statistics::Group gem5::Named

Classes

class  DataPort
 

Public Types

enum  : Addr {
  GITS_CTLR = itsControl + 0x0000 , GITS_IIDR = itsControl + 0x0004 , GITS_TYPER = itsControl + 0x0008 , GITS_CBASER = itsControl + 0x0080 ,
  GITS_CWRITER = itsControl + 0x0088 , GITS_CREADR = itsControl + 0x0090 , GITS_PIDR2 = itsControl + 0xffe8 , GITS_TRANSLATER = itsTranslate + 0x0040
}
 
- Public Types inherited from gem5::PioDevice
using Params = PioDeviceParams
 
- Public Types inherited from gem5::ClockedObject
using Params = ClockedObjectParams
 Parameters of ClockedObject. More...
 
- Public Types inherited from gem5::SimObject
typedef SimObjectParams Params
 

Public Member Functions

PortgetPort (const std::string &if_name, PortID idx) override
 Get a port with a given name and index. More...
 
bool recvTimingResp (PacketPtr pkt)
 
void recvReqRetry ()
 
 Gicv3Its (const Gicv3ItsParams &params)
 
void setGIC (Gicv3 *_gic)
 
AddrRangeList getAddrRanges () const override
 Every PIO device is obliged to provide an implementation that returns the address ranges the device responds to. More...
 
Tick read (PacketPtr pkt) override
 Pure virtual function that the device must implement. More...
 
Tick write (PacketPtr pkt) override
 Pure virtual function that the device must implement. More...
 
DrainState drain () override
 Draining is the process of clearing out the states of SimObjects.These are the SimObjects that are partially executed or are partially in flight. More...
 
void serialize (CheckpointOut &cp) const override
 Serialize an object. More...
 
void unserialize (CheckpointIn &cp) override
 Unserialize an object. More...
 
void translate (PacketPtr pkt)
 
 BitUnion32 (CTLR) Bitfield< 31 > quiescent
 
 EndBitUnion (CTLR) BitUnion64(CRDWR) Bitfield< 63
 
 EndBitUnion (CRDWR) BitUnion64(CBASER) Bitfield< 63
 
 EndBitUnion (CBASER) BitUnion64(BASER) Bitfield< 63 > valid
 
 EndBitUnion (BASER) BitUnion64(TYPER) Bitfield< 63
 
 EndBitUnion (TYPER) CTLR gitsControl
 
bool idOutOfRange (uint32_t event_id, uint8_t itt_range) const
 Returns TRUE if the eventID supplied has bits above the implemented size or above the itt_range. More...
 
bool deviceOutOfRange (uint32_t device_id) const
 Returns TRUE if the value supplied has bits above the implemented range or if the value supplied exceeds the maximum configured size in the appropriate GITS_BASER<n> More...
 
bool sizeOutOfRange (uint32_t size) const
 Returns TRUE if the value (size) supplied exceeds the maximum allowed by GITS_TYPER.ID_bits. More...
 
bool collectionOutOfRange (uint32_t collection_id) const
 Returns TRUE if the value supplied has bits above the implemented range or if the value exceeds the total number of collections supported in hardware and external memory. More...
 
bool lpiOutOfRange (uint32_t intid) const
 Returns TRUE if the value supplied is larger than that permitted by GICD_TYPER.IDbits or not in the LPI range and is not 1023. More...
 
 BitUnion64 (DTE) Bitfield< 57
 
 EndBitUnion (DTE) BitUnion64(ITTE) Bitfield< 59
 
 EndBitUnion (ITTE) BitUnion64(CTE) Bitfield< 40
 
 EndBitUnion (CTE) enum InterruptType
 
- Public Member Functions inherited from gem5::BasicPioDevice
 PARAMS (BasicPioDevice)
 
 BasicPioDevice (const Params &p, Addr size)
 
AddrRangeList getAddrRanges () const override
 Determine the address ranges that this device responds to. More...
 
- Public Member Functions inherited from gem5::PioDevice
 PioDevice (const Params &p)
 
virtual ~PioDevice ()
 
void init () override
 init() is called after all C++ SimObjects have been created and all ports are connected. More...
 
PortgetPort (const std::string &if_name, PortID idx=InvalidPortID) override
 Get a port with a given name and index. More...
 
- Public Member Functions inherited from gem5::ClockedObject
 ClockedObject (const ClockedObjectParams &p)
 
void serialize (CheckpointOut &cp) const override
 Serialize an object. More...
 
void unserialize (CheckpointIn &cp) override
 Unserialize an object. More...
 
- Public Member Functions inherited from gem5::SimObject
const Paramsparams () const
 
 SimObject (const Params &p)
 
virtual ~SimObject ()
 
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...
 
ProbeManagergetProbeManager ()
 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...
 
- Public Member Functions inherited from gem5::EventManager
EventQueueeventQueue () 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)
 This function is not needed by the usual gem5 event loop but may be necessary in derived EventQueues which host gem5 on other schedulers. More...
 
void setCurTick (Tick newVal)
 
 EventManager (EventManager &em)
 Event manger manages events in the event queue. More...
 
 EventManager (EventManager *em)
 
 EventManager (EventQueue *eq)
 
- 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. 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)
 
- Public Member Functions inherited from gem5::Drainable
DrainState drainState () const
 Return the current drain state of an object. More...
 
virtual void notifyFork ()
 Notify a child process of a fork. More...
 
- Public Member Functions inherited from gem5::statistics::Group
 Group (Group *parent, const char *name=nullptr)
 Construct a new statistics group. More...
 
virtual ~Group ()
 
virtual void regStats ()
 Callback to set stat parameters. More...
 
virtual void resetStats ()
 Callback to reset stats. More...
 
virtual void preDumpStats ()
 Callback before stats are dumped. More...
 
void addStat (statistics::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 InforesolveStat (std::string name) const
 Resolve a stat by its name within this group. More...
 
void mergeStatGroup (Group *block)
 Merge the contents (stats & children) of a block to this block. More...
 
 Group ()=delete
 
 Group (const Group &)=delete
 
Groupoperator= (const Group &)=delete
 
- Public Member Functions inherited from gem5::Named
 Named (const std::string &name_)
 
virtual ~Named ()=default
 
virtual std::string name () const
 
- Public Member Functions inherited from gem5::Clocked
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
 

Public Attributes

DataPort dmaPort
 
Bitfield< 7, 4 > itsNumber
 
Bitfield< 1 > imDe
 
Bitfield< 0 > enabled
 
 high
 
Bitfield< 31, 0 > low
 
Bitfield< 19, 5 > offset
 
Bitfield< 0 > retry
 
Bitfield< 0 > stalled
 
Bitfield< 63 > valid
 
Bitfield< 61, 59 > innerCache
 
Bitfield< 55, 53 > outerCache
 
Bitfield< 51, 12 > physAddr
 
Bitfield< 11, 10 > shareability
 
Bitfield< 7, 0 > size
 
Bitfield< 62 > indirect
 
Bitfield< 58, 56 > type
 
Bitfield< 52, 48 > entrySize
 
Bitfield< 47, 12 > physAddr
 
Bitfield< 9, 8 > pageSize
 
Bitfield< 37 > vmovp
 
Bitfield< 36 > cil
 
Bitfield< 35, 32 > cidBits
 
Bitfield< 31, 24 > hcc
 
Bitfield< 19 > pta
 
Bitfield< 18 > seis
 
Bitfield< 17, 13 > devBits
 
Bitfield< 12, 8 > idBits
 
Bitfield< 7, 4 > ittEntrySize
 
Bitfield< 2 > cct
 
Bitfield< 1 > _virtual
 
Bitfield< 0 > physical
 
TYPER gitsTyper
 
CBASER gitsCbaser
 
CRDWR gitsCreadr
 
CRDWR gitsCwriter
 
uint32_t gitsIidr
 
uint32_t gitsTranslater
 
std::vector< BASER > tableBases
 
 ittRange
 
Bitfield< 52, 1 > ittAddress
 
Bitfield< 0 > valid
 
 vpeid
 
Bitfield< 45, 30 > icid
 
Bitfield< 29, 16 > intNumHyp
 
Bitfield< 15, 2 > intNum
 
Bitfield< 1 > intType
 
 rdBase
 
- Public Attributes inherited from gem5::ClockedObject
PowerStatepowerState
 

Static Public Attributes

static const uint32_t itsControl = 0x0
 
static const uint32_t itsTranslate = 0x10000
 
static const AddrRange GITS_BASER
 
static const uint32_t NUM_BASER_REGS = 8
 
static const uint64_t BASER_INDIRECT = 0x4000000000000000
 
static const uint64_t BASER_TYPE = 0x0700000000000000
 
static const uint64_t BASER_ESZ = 0x001F000000000000
 
static const uint64_t BASER_SZ = 0x00000000000000FF
 
static const uint64_t BASER_WMASK
 
static const uint64_t BASER_WMASK_UNIMPL
 
static const uint32_t CTLR_QUIESCENT = 0x80000000
 

Private Types

enum  ItsTables { DEVICE_TABLE = 1 , VPE_TABLE = 2 , TRANSLATION_TABLE = 3 , COLLECTION_TABLE = 4 }
 
enum  PageSize { SIZE_4K , SIZE_16K , SIZE_64K }
 

Private Member Functions

uint64_t maxCommands () const
 
void checkCommandQueue ()
 
void incrementReadPointer ()
 
Gicv3RedistributorgetRedistributor (uint64_t rd_base)
 
Gicv3RedistributorgetRedistributor (CTE cte)
 
ItsAction runProcess (ItsProcess *proc, PacketPtr pkt)
 
ItsAction runProcessTiming (ItsProcess *proc, PacketPtr pkt)
 
ItsAction runProcessAtomic (ItsProcess *proc, PacketPtr pkt)
 
Addr pageAddress (enum ItsTables table)
 
void moveAllPendingState (Gicv3Redistributor *rd1, Gicv3Redistributor *rd2)
 

Private Attributes

std::queue< ItsActionpacketsToRetry
 
uint32_t requestorId
 
Gicv3gic
 
EventFunctionWrapper commandEvent
 
bool pendingCommands
 
uint32_t pendingTranslations
 

Friends

class gem5::ItsProcess
 
class gem5::ItsTranslation
 
class gem5::ItsCommand
 

Additional Inherited Members

- Static Public Member Functions inherited from gem5::SimObject
static void serializeAll (const std::string &cpt_dir)
 Create a checkpoint by serializing all SimObjects in the system. More...
 
static SimObjectfind (const char *name)
 Find the SimObject with the given name and return a pointer to it. More...
 
static void setSimObjectResolver (SimObjectResolver *resolver)
 There is a single object name resolver, and it is only set when simulation is restoring from checkpoints. More...
 
static SimObjectResolvergetSimObjectResolver ()
 There is a single object name resolver, and it is only set when simulation is restoring from checkpoints. More...
 
- Static Public Member Functions inherited from gem5::Serializable
static const std::string & currentSection ()
 Gets the fully-qualified name of the active section. More...
 
static void generateCheckpointOut (const std::string &cpt_dir, std::ofstream &outstream)
 Generate a checkpoint file so that the serialization can be routed to it. More...
 
- Protected Member Functions inherited from gem5::Drainable
 Drainable ()
 
virtual ~Drainable ()
 
virtual void drainResume ()
 Resume execution after a successful drain. More...
 
void signalDrainDone () const
 Signal that an object is drained. More...
 
- Protected Member Functions inherited from gem5::Clocked
 Clocked (ClockDomain &clk_domain)
 Create a clocked object and set the clock domain based on the parameters. More...
 
 Clocked (Clocked &)=delete
 
Clockedoperator= (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...
 
- Protected Attributes inherited from gem5::BasicPioDevice
Addr pioAddr
 Address that the device listens to. More...
 
Addr pioSize
 Size that the device's address range. More...
 
Tick pioDelay
 Delay that the device experinces on an access. More...
 
- Protected Attributes inherited from gem5::PioDevice
Systemsys
 
PioPort< PioDevicepioPort
 The pioPort that handles the requests for us and provides us requests that it sees. More...
 
- Protected Attributes inherited from gem5::SimObject
const SimObjectParams & _params
 Cached copy of the object parameters. More...
 
- Protected Attributes inherited from gem5::EventManager
EventQueueeventq
 A pointer to this object's event queue. More...
 

Detailed Description

GICv3 ITS module.

This class is just modelling a pio device with its memory mapped registers. Most of the ITS functionalities are implemented as processes (ItsProcess) objects, like ItsTranslation or ItsCommand. Main job of Gicv3Its is to spawn those processes upon receival of packets.

Definition at line 83 of file gic_v3_its.hh.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum : Addr
Enumerator
GITS_CTLR 
GITS_IIDR 
GITS_TYPER 
GITS_CBASER 
GITS_CWRITER 
GITS_CREADR 
GITS_PIDR2 
GITS_TRANSLATER 

Definition at line 140 of file gic_v3_its.hh.

◆ ItsTables

Enumerator
DEVICE_TABLE 
VPE_TABLE 
TRANSLATION_TABLE 
COLLECTION_TABLE 

Definition at line 310 of file gic_v3_its.hh.

◆ PageSize

Enumerator
SIZE_4K 
SIZE_16K 
SIZE_64K 

Definition at line 318 of file gic_v3_its.hh.

Constructor & Destructor Documentation

◆ Gicv3Its()

gem5::Gicv3Its::Gicv3Its ( const Gicv3ItsParams &  params)

Definition at line 782 of file gic_v3_its.cc.

References checkCommandQueue().

Member Function Documentation

◆ BitUnion32()

gem5::Gicv3Its::BitUnion32 ( CTLR  )

◆ BitUnion64()

gem5::Gicv3Its::BitUnion64 ( DTE  )

◆ checkCommandQueue()

void gem5::Gicv3Its::checkCommandQueue ( )
private

Definition at line 1086 of file gic_v3_its.cc.

References DPRINTF, gitsCbaser, gitsCreadr, gitsCwriter, maxCommands(), pendingCommands, and runProcess().

Referenced by Gicv3Its(), and write().

◆ collectionOutOfRange()

bool gem5::Gicv3Its::collectionOutOfRange ( uint32_t  collection_id) const

Returns TRUE if the value supplied has bits above the implemented range or if the value exceeds the total number of collections supported in hardware and external memory.

Definition at line 1012 of file gic_v3_its.cc.

References gitsTyper.

Referenced by gem5::ItsCommand::collectionOutOfRange(), and gem5::ItsTranslation::translateLPI().

◆ deviceOutOfRange()

bool gem5::Gicv3Its::deviceOutOfRange ( uint32_t  device_id) const

Returns TRUE if the value supplied has bits above the implemented range or if the value supplied exceeds the maximum configured size in the appropriate GITS_BASER<n>

Definition at line 1000 of file gic_v3_its.cc.

References gitsTyper.

Referenced by gem5::ItsCommand::deviceOutOfRange(), and gem5::ItsTranslation::translateLPI().

◆ drain()

DrainState gem5::Gicv3Its::drain ( )
overridevirtual

Draining is the process of clearing out the states of SimObjects.These are the SimObjects that are partially executed or are partially in flight.

Draining is mostly used before forking and creating a check point.

This function notifies 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.

Note
An object that has entered the Drained state can be disturbed by other objects in the system and consequently stop being drained. These perturbations are not visible in the drain state. The simulator therefore repeats the draining process until all objects return DrainState::Drained on the first call to drain().
Returns
DrainState::Drained if the object is drained at this point in time, DrainState::Draining if it needs further simulation.

Implements gem5::Drainable.

Definition at line 1031 of file gic_v3_its.cc.

References DPRINTF, gem5::Drained, gem5::Draining, pendingCommands, and pendingTranslations.

◆ EndBitUnion() [1/8]

gem5::Gicv3Its::EndBitUnion ( BASER  )

◆ EndBitUnion() [2/8]

gem5::Gicv3Its::EndBitUnion ( CBASER  )

◆ EndBitUnion() [3/8]

gem5::Gicv3Its::EndBitUnion ( CRDWR  )

◆ EndBitUnion() [4/8]

gem5::Gicv3Its::EndBitUnion ( CTE  )
inline

Definition at line 291 of file gic_v3_its.hh.

◆ EndBitUnion() [5/8]

gem5::Gicv3Its::EndBitUnion ( CTLR  )

◆ EndBitUnion() [6/8]

gem5::Gicv3Its::EndBitUnion ( DTE  )

◆ EndBitUnion() [7/8]

gem5::Gicv3Its::EndBitUnion ( ITTE  )

◆ EndBitUnion() [8/8]

gem5::Gicv3Its::EndBitUnion ( TYPER  )

◆ getAddrRanges()

AddrRangeList gem5::Gicv3Its::getAddrRanges ( ) const
overridevirtual

Every PIO device is obliged to provide an implementation that returns the address ranges the device responds to.

Returns
a list of non-overlapping address ranges

Implements gem5::PioDevice.

Definition at line 815 of file gic_v3_its.cc.

References DPRINTF, gem5::BasicPioDevice::pioAddr, gem5::BasicPioDevice::pioSize, and gem5::RangeSize().

◆ getPort()

Port & gem5::Gicv3Its::getPort ( const std::string &  if_name,
PortID  idx 
)
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.

gem5 has a request and response port interface. All memory objects are connected together via ports. These ports provide a rigid interface between these memory objects. These ports implement three different memory system modes: timing, atomic, and functional. The most important mode is the timing mode and here timing mode is used for conducting cycle-level timing experiments. The other modes are only used in special circumstances and should not be used to conduct cycle-level timing experiments. The other modes are only used in special circumstances. These ports allow SimObjects to communicate with each other.

Parameters
if_namePort name
idxIndex in the case of a VectorPort
Returns
A reference to the given port

Reimplemented from gem5::SimObject.

Definition at line 1114 of file gic_v3_its.cc.

References dmaPort, and gem5::PioDevice::getPort().

◆ getRedistributor() [1/2]

Gicv3Redistributor* gem5::Gicv3Its::getRedistributor ( CTE  cte)
inlineprivate

Definition at line 301 of file gic_v3_its.hh.

References getRedistributor().

◆ getRedistributor() [2/2]

Gicv3Redistributor * gem5::Gicv3Its::getRedistributor ( uint64_t  rd_base)
private

◆ idOutOfRange()

bool gem5::Gicv3Its::idOutOfRange ( uint32_t  event_id,
uint8_t  itt_range 
) const

Returns TRUE if the eventID supplied has bits above the implemented size or above the itt_range.

Definition at line 992 of file gic_v3_its.cc.

References gitsTyper.

Referenced by gem5::ItsCommand::idOutOfRange(), and gem5::ItsTranslation::translateLPI().

◆ incrementReadPointer()

void gem5::Gicv3Its::incrementReadPointer ( )
private

◆ lpiOutOfRange()

bool gem5::Gicv3Its::lpiOutOfRange ( uint32_t  intid) const

Returns TRUE if the value supplied is larger than that permitted by GICD_TYPER.IDbits or not in the LPI range and is not 1023.

Definition at line 1023 of file gic_v3_its.cc.

References gem5::Gicv3Distributor::IDBITS, gem5::Gicv3::INTID_SPURIOUS, and gem5::Gicv3Redistributor::SMALLEST_LPI_ID.

Referenced by gem5::ItsCommand::mapi(), and gem5::ItsCommand::mapti().

◆ maxCommands()

uint64_t gem5::Gicv3Its::maxCommands ( ) const
private

Definition at line 1080 of file gic_v3_its.cc.

References gitsCbaser.

Referenced by checkCommandQueue(), and incrementReadPointer().

◆ moveAllPendingState()

void gem5::Gicv3Its::moveAllPendingState ( Gicv3Redistributor rd1,
Gicv3Redistributor rd2 
)
private

◆ pageAddress()

Addr gem5::Gicv3Its::pageAddress ( enum ItsTables  table)
private

◆ read()

Tick gem5::Gicv3Its::read ( PacketPtr  pkt)
overridevirtual

◆ recvReqRetry()

void gem5::Gicv3Its::recvReqRetry ( )

◆ recvTimingResp()

bool gem5::Gicv3Its::recvTimingResp ( PacketPtr  pkt)

◆ runProcess()

ItsAction gem5::Gicv3Its::runProcess ( ItsProcess proc,
PacketPtr  pkt 
)
private

◆ runProcessAtomic()

ItsAction gem5::Gicv3Its::runProcessAtomic ( ItsProcess proc,
PacketPtr  pkt 
)
private

◆ runProcessTiming()

ItsAction gem5::Gicv3Its::runProcessTiming ( ItsProcess proc,
PacketPtr  pkt 
)
private

◆ serialize()

void gem5::Gicv3Its::serialize ( CheckpointOut cp) const
overridevirtual

Serialize an object.

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

Parameters
cpCheckpoint state

Implements gem5::Serializable.

Definition at line 1042 of file gic_v3_its.cc.

References gitsCbaser, gitsCreadr, gitsCwriter, gitsIidr, gitsTyper, SERIALIZE_CONTAINER, SERIALIZE_SCALAR, and tableBases.

◆ setGIC()

void gem5::Gicv3Its::setGIC ( Gicv3 _gic)

Definition at line 808 of file gic_v3_its.cc.

References gic.

Referenced by gem5::Gicv3::init().

◆ sizeOutOfRange()

bool gem5::Gicv3Its::sizeOutOfRange ( uint32_t  size) const

Returns TRUE if the value (size) supplied exceeds the maximum allowed by GITS_TYPER.ID_bits.

Size is the parameter which is passed to the ITS via the MAPD command and is stored in the DTE.ittRange field.

Definition at line 1006 of file gic_v3_its.cc.

References gitsTyper, and size.

Referenced by gem5::ItsCommand::sizeOutOfRange().

◆ translate()

void gem5::Gicv3Its::translate ( PacketPtr  pkt)

Definition at line 1229 of file gic_v3_its.cc.

References DPRINTF, and runProcess().

Referenced by write().

◆ unserialize()

void gem5::Gicv3Its::unserialize ( CheckpointIn cp)
overridevirtual

Unserialize an object.

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

Parameters
cpCheckpoint state

Implements gem5::Serializable.

Definition at line 1055 of file gic_v3_its.cc.

References gitsCbaser, gitsCreadr, gitsCwriter, gitsIidr, gitsTyper, tableBases, UNSERIALIZE_CONTAINER, and UNSERIALIZE_SCALAR.

◆ write()

Tick gem5::Gicv3Its::write ( PacketPtr  pkt)
overridevirtual

Friends And Related Function Documentation

◆ gem5::ItsCommand

friend class gem5::ItsCommand
friend

Definition at line 87 of file gic_v3_its.hh.

◆ gem5::ItsProcess

friend class gem5::ItsProcess
friend

Definition at line 85 of file gic_v3_its.hh.

◆ gem5::ItsTranslation

friend class gem5::ItsTranslation
friend

Definition at line 86 of file gic_v3_its.hh.

Member Data Documentation

◆ _virtual

Bitfield<1> gem5::Gicv3Its::_virtual

Definition at line 219 of file gic_v3_its.hh.

◆ BASER_ESZ

const uint64_t gem5::Gicv3Its::BASER_ESZ = 0x001F000000000000
static

Definition at line 130 of file gic_v3_its.hh.

◆ BASER_INDIRECT

const uint64_t gem5::Gicv3Its::BASER_INDIRECT = 0x4000000000000000
static

Definition at line 128 of file gic_v3_its.hh.

◆ BASER_SZ

const uint64_t gem5::Gicv3Its::BASER_SZ = 0x00000000000000FF
static

Definition at line 131 of file gic_v3_its.hh.

◆ BASER_TYPE

const uint64_t gem5::Gicv3Its::BASER_TYPE = 0x0700000000000000
static

Definition at line 129 of file gic_v3_its.hh.

◆ BASER_WMASK

const uint64_t gem5::Gicv3Its::BASER_WMASK
static
Initial value:
=
static const uint64_t BASER_INDIRECT
Definition: gic_v3_its.hh:128
static const uint64_t BASER_TYPE
Definition: gic_v3_its.hh:129
static const uint64_t BASER_ESZ
Definition: gic_v3_its.hh:130

Definition at line 132 of file gic_v3_its.hh.

Referenced by write().

◆ BASER_WMASK_UNIMPL

const uint64_t gem5::Gicv3Its::BASER_WMASK_UNIMPL
static
Initial value:
=
static const uint64_t BASER_SZ
Definition: gic_v3_its.hh:131

Definition at line 134 of file gic_v3_its.hh.

Referenced by write().

◆ cct

Bitfield<2> gem5::Gicv3Its::cct

Definition at line 218 of file gic_v3_its.hh.

◆ cidBits

Bitfield<35, 32> gem5::Gicv3Its::cidBits

Definition at line 211 of file gic_v3_its.hh.

◆ cil

Bitfield<36> gem5::Gicv3Its::cil

Definition at line 210 of file gic_v3_its.hh.

◆ commandEvent

EventFunctionWrapper gem5::Gicv3Its::commandEvent
private

Definition at line 334 of file gic_v3_its.hh.

Referenced by runProcessTiming().

◆ CTLR_QUIESCENT

const uint32_t gem5::Gicv3Its::CTLR_QUIESCENT = 0x80000000
static

Definition at line 138 of file gic_v3_its.hh.

Referenced by write().

◆ devBits

Bitfield<17, 13> gem5::Gicv3Its::devBits

Definition at line 215 of file gic_v3_its.hh.

◆ dmaPort

DataPort gem5::Gicv3Its::dmaPort

Definition at line 107 of file gic_v3_its.hh.

Referenced by getPort(), recvReqRetry(), runProcessAtomic(), and runProcessTiming().

◆ enabled

Bitfield<0> gem5::Gicv3Its::enabled

Definition at line 170 of file gic_v3_its.hh.

◆ entrySize

Bitfield<52, 48> gem5::Gicv3Its::entrySize

Definition at line 199 of file gic_v3_its.hh.

◆ gic

Gicv3* gem5::Gicv3Its::gic
private

Definition at line 333 of file gic_v3_its.hh.

Referenced by getRedistributor(), read(), and setGIC().

◆ GITS_BASER

const AddrRange gem5::Gicv3Its::GITS_BASER
static

Definition at line 121 of file gic_v3_its.hh.

Referenced by read(), and write().

◆ gitsCbaser

CBASER gem5::Gicv3Its::gitsCbaser

◆ gitsCreadr

CRDWR gem5::Gicv3Its::gitsCreadr

◆ gitsCwriter

CRDWR gem5::Gicv3Its::gitsCwriter

◆ gitsIidr

uint32_t gem5::Gicv3Its::gitsIidr

Definition at line 228 of file gic_v3_its.hh.

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

◆ gitsTranslater

uint32_t gem5::Gicv3Its::gitsTranslater

Definition at line 229 of file gic_v3_its.hh.

Referenced by gem5::ItsTranslation::main(), and read().

◆ gitsTyper

TYPER gem5::Gicv3Its::gitsTyper

◆ hcc

Bitfield<31, 24> gem5::Gicv3Its::hcc

Definition at line 212 of file gic_v3_its.hh.

◆ high

gem5::Gicv3Its::high

Definition at line 175 of file gic_v3_its.hh.

◆ icid

Bitfield<45, 30> gem5::Gicv3Its::icid

Definition at line 281 of file gic_v3_its.hh.

◆ idBits

Bitfield<12, 8> gem5::Gicv3Its::idBits

Definition at line 216 of file gic_v3_its.hh.

◆ imDe

Bitfield<1> gem5::Gicv3Its::imDe

Definition at line 169 of file gic_v3_its.hh.

◆ indirect

Bitfield<62> gem5::Gicv3Its::indirect

Definition at line 195 of file gic_v3_its.hh.

◆ innerCache

Bitfield< 61, 59 > gem5::Gicv3Its::innerCache

Definition at line 186 of file gic_v3_its.hh.

◆ intNum

Bitfield<15, 2> gem5::Gicv3Its::intNum

Definition at line 283 of file gic_v3_its.hh.

◆ intNumHyp

Bitfield<29, 16> gem5::Gicv3Its::intNumHyp

Definition at line 282 of file gic_v3_its.hh.

◆ intType

Bitfield<1> gem5::Gicv3Its::intType

Definition at line 284 of file gic_v3_its.hh.

◆ itsControl

const uint32_t gem5::Gicv3Its::itsControl = 0x0
static

Definition at line 117 of file gic_v3_its.hh.

◆ itsNumber

Bitfield<7, 4> gem5::Gicv3Its::itsNumber

Definition at line 168 of file gic_v3_its.hh.

◆ itsTranslate

const uint32_t gem5::Gicv3Its::itsTranslate = 0x10000
static

Definition at line 118 of file gic_v3_its.hh.

◆ ittAddress

Bitfield<52, 1> gem5::Gicv3Its::ittAddress

Definition at line 275 of file gic_v3_its.hh.

◆ ittEntrySize

Bitfield<7, 4> gem5::Gicv3Its::ittEntrySize

Definition at line 217 of file gic_v3_its.hh.

◆ ittRange

gem5::Gicv3Its::ittRange

Definition at line 274 of file gic_v3_its.hh.

◆ low

Bitfield< 31, 0 > gem5::Gicv3Its::low

Definition at line 176 of file gic_v3_its.hh.

◆ NUM_BASER_REGS

const uint32_t gem5::Gicv3Its::NUM_BASER_REGS = 8
static

Definition at line 123 of file gic_v3_its.hh.

◆ offset

Bitfield<19, 5> gem5::Gicv3Its::offset

Definition at line 177 of file gic_v3_its.hh.

◆ outerCache

Bitfield< 55, 53 > gem5::Gicv3Its::outerCache

Definition at line 187 of file gic_v3_its.hh.

◆ packetsToRetry

std::queue<ItsAction> gem5::Gicv3Its::packetsToRetry
private

Definition at line 331 of file gic_v3_its.hh.

Referenced by recvReqRetry(), and runProcessTiming().

◆ pageSize

Bitfield<9, 8> gem5::Gicv3Its::pageSize

Definition at line 202 of file gic_v3_its.hh.

◆ pendingCommands

bool gem5::Gicv3Its::pendingCommands
private

◆ pendingTranslations

uint32_t gem5::Gicv3Its::pendingTranslations
private

◆ physAddr [1/2]

Bitfield<51, 12> gem5::Gicv3Its::physAddr

Definition at line 188 of file gic_v3_its.hh.

◆ physAddr [2/2]

Bitfield<47, 12> gem5::Gicv3Its::physAddr

Definition at line 200 of file gic_v3_its.hh.

◆ physical

Bitfield<0> gem5::Gicv3Its::physical

Definition at line 220 of file gic_v3_its.hh.

◆ pta

Bitfield<19> gem5::Gicv3Its::pta

Definition at line 213 of file gic_v3_its.hh.

◆ rdBase

gem5::Gicv3Its::rdBase

Definition at line 289 of file gic_v3_its.hh.

◆ requestorId

uint32_t gem5::Gicv3Its::requestorId
private

Definition at line 332 of file gic_v3_its.hh.

Referenced by gem5::ItsProcess::doRead(), and gem5::ItsProcess::doWrite().

◆ retry

Bitfield<0> gem5::Gicv3Its::retry

Definition at line 178 of file gic_v3_its.hh.

◆ seis

Bitfield<18> gem5::Gicv3Its::seis

Definition at line 214 of file gic_v3_its.hh.

◆ shareability

Bitfield< 11, 10 > gem5::Gicv3Its::shareability

Definition at line 189 of file gic_v3_its.hh.

◆ size

Bitfield< 7, 0 > gem5::Gicv3Its::size

Definition at line 190 of file gic_v3_its.hh.

Referenced by sizeOutOfRange().

◆ stalled

Bitfield<0> gem5::Gicv3Its::stalled

Definition at line 179 of file gic_v3_its.hh.

◆ tableBases

std::vector<BASER> gem5::Gicv3Its::tableBases

Definition at line 231 of file gic_v3_its.hh.

Referenced by pageAddress(), read(), serialize(), unserialize(), and write().

◆ type

Bitfield<58, 56> gem5::Gicv3Its::type

Definition at line 197 of file gic_v3_its.hh.

◆ valid [1/2]

Bitfield< 0 > gem5::Gicv3Its::valid

Definition at line 185 of file gic_v3_its.hh.

◆ valid [2/2]

Bitfield<0> gem5::Gicv3Its::valid

Definition at line 276 of file gic_v3_its.hh.

◆ vmovp

Bitfield<37> gem5::Gicv3Its::vmovp

Definition at line 209 of file gic_v3_its.hh.

◆ vpeid

gem5::Gicv3Its::vpeid

Definition at line 280 of file gic_v3_its.hh.


The documentation for this class was generated from the following files:

Generated on Wed Dec 21 2022 10:23:17 for gem5 by doxygen 1.9.1