gem5  v20.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
Gicv3Its Class Reference

GICv3 ITS module. More...

#include <gic_v3_its.hh>

Inheritance diagram for Gicv3Its:
BasicPioDevice PioDevice ClockedObject SimObject Clocked EventManager Serializable Drainable Stats::Group

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 BasicPioDevice
typedef BasicPioDeviceParams Params
 
- Public Types inherited from PioDevice
typedef PioDeviceParams Params
 
- Public Types inherited from ClockedObject
typedef ClockedObjectParams Params
 Parameters of ClockedObject. More...
 
- Public Types inherited from 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 BasicPioDevice
 BasicPioDevice (const Params *p, Addr size)
 
const Paramsparams () const
 
AddrRangeList getAddrRanges () const override
 Determine the address ranges that this device responds to. More...
 
- Public Member Functions inherited from PioDevice
 PioDevice (const Params *p)
 
virtual ~PioDevice ()
 
const Paramsparams () const
 
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 ClockedObject
 ClockedObject (const ClockedObjectParams *p)
 
const Paramsparams () const
 
void serialize (CheckpointOut &cp) const override
 Serialize an object. More...
 
void unserialize (CheckpointIn &cp) override
 Unserialize an object. More...
 
- Public Member Functions inherited from SimObject
const Paramsparams () const
 
 SimObject (const Params *_params)
 
virtual ~SimObject ()
 
virtual const std::string name () const
 
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 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 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 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 Stats::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 (Stats::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...
 
 Group ()=delete
 
 Group (const Group &)=delete
 
Groupoperator= (const Group &)=delete
 
- Public Member Functions inherited from 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 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 ::ItsProcess
 
class ::ItsTranslation
 
class ::ItsCommand
 

Additional Inherited Members

- Static Public Member Functions inherited from SimObject
static void serializeAll (CheckpointOut &cp)
 Serialize 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 Public Member Functions inherited from Serializable
static const std::string & currentSection ()
 Gets the fully-qualified name of the active section. More...
 
static void serializeAll (const std::string &cpt_dir)
 Serializes all the SimObjects. More...
 
static void unserializeGlobals (CheckpointIn &cp)
 
- Protected Member Functions inherited from 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 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 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 PioDevice
Systemsys
 
PioPort< PioDevicepioPort
 The pioPort that handles the requests for us and provides us requests that it sees. More...
 
- Protected Attributes inherited from SimObject
const SimObjectParams * _params
 Cached copy of the object parameters. More...
 
- Protected Attributes inherited from 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 74 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 130 of file gic_v3_its.hh.

◆ ItsTables

enum Gicv3Its::ItsTables
private
Enumerator
DEVICE_TABLE 
VPE_TABLE 
TRANSLATION_TABLE 
COLLECTION_TABLE 

Definition at line 300 of file gic_v3_its.hh.

◆ PageSize

enum Gicv3Its::PageSize
private
Enumerator
SIZE_4K 
SIZE_16K 
SIZE_64K 

Definition at line 308 of file gic_v3_its.hh.

Constructor & Destructor Documentation

◆ Gicv3Its()

Gicv3Its::Gicv3Its ( const Gicv3ItsParams *  params)

Definition at line 774 of file gic_v3_its.cc.

References checkCommandQueue().

Member Function Documentation

◆ BitUnion32()

Gicv3Its::BitUnion32 ( CTLR  )

◆ BitUnion64()

Gicv3Its::BitUnion64 ( DTE  )

◆ checkCommandQueue()

void Gicv3Its::checkCommandQueue ( )
private

Definition at line 1078 of file gic_v3_its.cc.

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

Referenced by Gicv3Its(), and write().

◆ collectionOutOfRange()

bool 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 1004 of file gic_v3_its.cc.

References gitsTyper, and ULL.

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

◆ deviceOutOfRange()

bool 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 992 of file gic_v3_its.cc.

References gitsTyper, and ULL.

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

◆ drain()

DrainState 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 Drainable.

Definition at line 1023 of file gic_v3_its.cc.

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

◆ EndBitUnion() [1/8]

Gicv3Its::EndBitUnion ( BASER  )

◆ EndBitUnion() [2/8]

Gicv3Its::EndBitUnion ( CBASER  )

◆ EndBitUnion() [3/8]

Gicv3Its::EndBitUnion ( CRDWR  )

◆ EndBitUnion() [4/8]

Gicv3Its::EndBitUnion ( CTE  )
inline

Definition at line 281 of file gic_v3_its.hh.

◆ EndBitUnion() [5/8]

Gicv3Its::EndBitUnion ( CTLR  )

◆ EndBitUnion() [6/8]

Gicv3Its::EndBitUnion ( DTE  )

◆ EndBitUnion() [7/8]

Gicv3Its::EndBitUnion ( ITTE  )

◆ EndBitUnion() [8/8]

Gicv3Its::EndBitUnion ( TYPER  )

◆ getAddrRanges()

AddrRangeList 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 PioDevice.

Definition at line 807 of file gic_v3_its.cc.

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

◆ getPort()

Port & 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 SimObject.

Definition at line 1106 of file gic_v3_its.cc.

References dmaPort, and PioDevice::getPort().

◆ getRedistributor() [1/2]

Gicv3Redistributor* Gicv3Its::getRedistributor ( CTE  cte)
inlineprivate

Definition at line 291 of file gic_v3_its.hh.

References getRedistributor().

◆ getRedistributor() [2/2]

Gicv3Redistributor * Gicv3Its::getRedistributor ( uint64_t  rd_base)
private

◆ idOutOfRange()

bool 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 984 of file gic_v3_its.cc.

References gitsTyper, and ULL.

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

◆ incrementReadPointer()

void Gicv3Its::incrementReadPointer ( )
private

◆ lpiOutOfRange()

bool 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 1015 of file gic_v3_its.cc.

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

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

◆ maxCommands()

uint64_t Gicv3Its::maxCommands ( ) const
private

Definition at line 1072 of file gic_v3_its.cc.

References gitsCbaser.

Referenced by checkCommandQueue(), and incrementReadPointer().

◆ moveAllPendingState()

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

◆ pageAddress()

Addr Gicv3Its::pageAddress ( enum ItsTables  table)
private

◆ read()

Tick Gicv3Its::read ( PacketPtr  pkt)
overridevirtual

Pure virtual function that the device must implement.

Called when a read command is recieved by the port.

Parameters
pktPacket describing this request
Returns
number of ticks it took to complete

Implements PioDevice.

Definition at line 817 of file gic_v3_its.cc.

References addr, AddrRange::contains(), DPRINTF, Packet::getAddr(), Gicv3::getDistributor(), gic, Gicv3Distributor::gicdPidr2, GITS_BASER, GITS_CBASER, GITS_CREADR, GITS_CTLR, GITS_CWRITER, GITS_IIDR, GITS_PIDR2, GITS_TRANSLATER, GITS_TYPER, gitsCbaser, gitsCreadr, gitsCwriter, gitsIidr, gitsTranslater, gitsTyper, Packet::makeAtomicResponse(), panic, BasicPioDevice::pioAddr, BasicPioDevice::pioDelay, Packet::setUintX(), AddrRange::start(), and tableBases.

◆ recvReqRetry()

void Gicv3Its::recvReqRetry ( )

◆ recvTimingResp()

bool Gicv3Its::recvTimingResp ( PacketPtr  pkt)

◆ runProcess()

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

◆ runProcessAtomic()

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

◆ runProcessTiming()

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

◆ serialize()

void Gicv3Its::serialize ( CheckpointOut cp) const
overridevirtual

Serialize an object.

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

Parameters
cpCheckpoint state

Implements Serializable.

Definition at line 1034 of file gic_v3_its.cc.

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

◆ setGIC()

void Gicv3Its::setGIC ( Gicv3 _gic)

Definition at line 800 of file gic_v3_its.cc.

References gic.

Referenced by Gicv3::init().

◆ sizeOutOfRange()

bool 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 998 of file gic_v3_its.cc.

References gitsTyper, and size.

Referenced by ItsCommand::sizeOutOfRange().

◆ translate()

void Gicv3Its::translate ( PacketPtr  pkt)

Definition at line 1221 of file gic_v3_its.cc.

References DPRINTF, and runProcess().

Referenced by write().

◆ unserialize()

void Gicv3Its::unserialize ( CheckpointIn cp)
overridevirtual

Unserialize an object.

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

Parameters
cpCheckpoint state

Implements Serializable.

Definition at line 1047 of file gic_v3_its.cc.

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

◆ write()

Tick Gicv3Its::write ( PacketPtr  pkt)
overridevirtual

Pure virtual function that the device must implement.

Called when a write command is recieved by the port.

Parameters
pktPacket describing this request
Returns
number of ticks it took to complete

Implements PioDevice.

Definition at line 891 of file gic_v3_its.cc.

References addr, BASER_WMASK, BASER_WMASK_UNIMPL, checkCommandQueue(), AddrRange::contains(), CTLR_QUIESCENT, DPRINTF, Packet::getAddr(), Packet::getLE(), Packet::getSize(), GITS_BASER, GITS_CBASER, GITS_CREADR, GITS_CTLR, GITS_CWRITER, GITS_IIDR, GITS_TRANSLATER, GITS_TYPER, gitsCbaser, gitsCreadr, gitsCwriter, Packet::makeAtomicResponse(), panic, BasicPioDevice::pioAddr, BasicPioDevice::pioDelay, AddrRange::start(), tableBases, translate(), and X86ISA::val.

Friends And Related Function Documentation

◆ ::ItsCommand

friend class ::ItsCommand
friend

Definition at line 78 of file gic_v3_its.hh.

◆ ::ItsProcess

friend class ::ItsProcess
friend

Definition at line 76 of file gic_v3_its.hh.

◆ ::ItsTranslation

friend class ::ItsTranslation
friend

Definition at line 77 of file gic_v3_its.hh.

Member Data Documentation

◆ _virtual

Bitfield<1> Gicv3Its::_virtual

Definition at line 209 of file gic_v3_its.hh.

◆ BASER_ESZ

const uint64_t Gicv3Its::BASER_ESZ = 0x001F000000000000
static

Definition at line 120 of file gic_v3_its.hh.

◆ BASER_INDIRECT

const uint64_t Gicv3Its::BASER_INDIRECT = 0x4000000000000000
static

Definition at line 118 of file gic_v3_its.hh.

◆ BASER_SZ

const uint64_t Gicv3Its::BASER_SZ = 0x00000000000000FF
static

Definition at line 121 of file gic_v3_its.hh.

◆ BASER_TYPE

const uint64_t Gicv3Its::BASER_TYPE = 0x0700000000000000
static

Definition at line 119 of file gic_v3_its.hh.

◆ BASER_WMASK

const uint64_t Gicv3Its::BASER_WMASK
static
Initial value:

Definition at line 122 of file gic_v3_its.hh.

Referenced by write().

◆ BASER_WMASK_UNIMPL

const uint64_t Gicv3Its::BASER_WMASK_UNIMPL
static
Initial value:

Definition at line 124 of file gic_v3_its.hh.

Referenced by write().

◆ cct

Bitfield<2> Gicv3Its::cct

Definition at line 208 of file gic_v3_its.hh.

◆ cidBits

Bitfield<35, 32> Gicv3Its::cidBits

Definition at line 201 of file gic_v3_its.hh.

◆ cil

Bitfield<36> Gicv3Its::cil

Definition at line 200 of file gic_v3_its.hh.

◆ commandEvent

EventFunctionWrapper Gicv3Its::commandEvent
private

Definition at line 324 of file gic_v3_its.hh.

Referenced by runProcessTiming().

◆ CTLR_QUIESCENT

const uint32_t Gicv3Its::CTLR_QUIESCENT = 0x80000000
static

Definition at line 128 of file gic_v3_its.hh.

Referenced by write().

◆ devBits

Bitfield<17, 13> Gicv3Its::devBits

Definition at line 205 of file gic_v3_its.hh.

◆ dmaPort

DataPort Gicv3Its::dmaPort

Definition at line 97 of file gic_v3_its.hh.

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

◆ enabled

Bitfield<0> Gicv3Its::enabled

Definition at line 160 of file gic_v3_its.hh.

◆ entrySize

Bitfield<52, 48> Gicv3Its::entrySize

Definition at line 189 of file gic_v3_its.hh.

◆ gic

Gicv3* Gicv3Its::gic
private

Definition at line 323 of file gic_v3_its.hh.

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

◆ GITS_BASER

const AddrRange Gicv3Its::GITS_BASER
static

Definition at line 111 of file gic_v3_its.hh.

Referenced by read(), and write().

◆ gitsCbaser

CBASER Gicv3Its::gitsCbaser

◆ gitsCreadr

CRDWR Gicv3Its::gitsCreadr

◆ gitsCwriter

CRDWR Gicv3Its::gitsCwriter

Definition at line 217 of file gic_v3_its.hh.

Referenced by checkCommandQueue(), ItsCommand::main(), read(), serialize(), unserialize(), and write().

◆ gitsIidr

uint32_t Gicv3Its::gitsIidr

Definition at line 218 of file gic_v3_its.hh.

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

◆ gitsTranslater

uint32_t Gicv3Its::gitsTranslater

Definition at line 219 of file gic_v3_its.hh.

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

◆ gitsTyper

TYPER Gicv3Its::gitsTyper

◆ hcc

Bitfield<31, 24> Gicv3Its::hcc

Definition at line 202 of file gic_v3_its.hh.

◆ high

Gicv3Its::high

Definition at line 165 of file gic_v3_its.hh.

◆ icid

Bitfield<45, 30> Gicv3Its::icid

Definition at line 271 of file gic_v3_its.hh.

Referenced by ItsCommand::invall(), and ItsCommand::mapc().

◆ idBits

Bitfield<12, 8> Gicv3Its::idBits

Definition at line 206 of file gic_v3_its.hh.

◆ imDe

Bitfield<1> Gicv3Its::imDe

Definition at line 159 of file gic_v3_its.hh.

◆ indirect

Bitfield<62> Gicv3Its::indirect

Definition at line 185 of file gic_v3_its.hh.

◆ innerCache

Bitfield< 61, 59 > Gicv3Its::innerCache

Definition at line 176 of file gic_v3_its.hh.

◆ intNum

Bitfield<15, 2> Gicv3Its::intNum

Definition at line 273 of file gic_v3_its.hh.

◆ intNumHyp

Bitfield<29, 16> Gicv3Its::intNumHyp

Definition at line 272 of file gic_v3_its.hh.

◆ intType

Bitfield<1> Gicv3Its::intType

Definition at line 274 of file gic_v3_its.hh.

◆ itsControl

const uint32_t Gicv3Its::itsControl = 0x0
static

Definition at line 107 of file gic_v3_its.hh.

◆ itsNumber

Bitfield<7, 4> Gicv3Its::itsNumber

Definition at line 158 of file gic_v3_its.hh.

◆ itsTranslate

const uint32_t Gicv3Its::itsTranslate = 0x10000
static

Definition at line 108 of file gic_v3_its.hh.

◆ ittAddress

Bitfield<52, 1> Gicv3Its::ittAddress

Definition at line 265 of file gic_v3_its.hh.

◆ ittEntrySize

Bitfield<7, 4> Gicv3Its::ittEntrySize

Definition at line 207 of file gic_v3_its.hh.

◆ ittRange

Gicv3Its::ittRange

Definition at line 264 of file gic_v3_its.hh.

◆ low

Bitfield< 31, 0 > Gicv3Its::low

Definition at line 166 of file gic_v3_its.hh.

◆ NUM_BASER_REGS

const uint32_t Gicv3Its::NUM_BASER_REGS = 8
static

Definition at line 113 of file gic_v3_its.hh.

◆ offset

Bitfield<19, 5> Gicv3Its::offset

Definition at line 167 of file gic_v3_its.hh.

◆ outerCache

Bitfield< 55, 53 > Gicv3Its::outerCache

Definition at line 177 of file gic_v3_its.hh.

◆ packetsToRetry

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

Definition at line 321 of file gic_v3_its.hh.

Referenced by recvReqRetry(), and runProcessTiming().

◆ pageSize

Bitfield<9, 8> Gicv3Its::pageSize

Definition at line 192 of file gic_v3_its.hh.

◆ pendingCommands

bool Gicv3Its::pendingCommands
private

◆ pendingTranslations

uint32_t Gicv3Its::pendingTranslations
private

◆ physAddr [1/2]

Bitfield<51, 12> Gicv3Its::physAddr

Definition at line 178 of file gic_v3_its.hh.

◆ physAddr [2/2]

Bitfield<47, 12> Gicv3Its::physAddr

Definition at line 190 of file gic_v3_its.hh.

◆ physical

Bitfield<0> Gicv3Its::physical

Definition at line 210 of file gic_v3_its.hh.

◆ pta

Bitfield<19> Gicv3Its::pta

Definition at line 203 of file gic_v3_its.hh.

◆ rdBase

Gicv3Its::rdBase

Definition at line 279 of file gic_v3_its.hh.

◆ requestorId

uint32_t Gicv3Its::requestorId
private

Definition at line 322 of file gic_v3_its.hh.

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

◆ retry

Bitfield<0> Gicv3Its::retry

Definition at line 168 of file gic_v3_its.hh.

◆ seis

Bitfield<18> Gicv3Its::seis

Definition at line 204 of file gic_v3_its.hh.

◆ shareability

Bitfield< 11, 10 > Gicv3Its::shareability

Definition at line 179 of file gic_v3_its.hh.

◆ size

Bitfield< 7, 0 > Gicv3Its::size

◆ stalled

Bitfield<0> Gicv3Its::stalled

Definition at line 169 of file gic_v3_its.hh.

◆ tableBases

std::vector<BASER> Gicv3Its::tableBases

Definition at line 221 of file gic_v3_its.hh.

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

◆ type

Bitfield<58, 56> Gicv3Its::type

Definition at line 187 of file gic_v3_its.hh.

◆ valid [1/2]

Bitfield< 0 > Gicv3Its::valid

Definition at line 175 of file gic_v3_its.hh.

◆ valid [2/2]

Bitfield<0> Gicv3Its::valid

Definition at line 266 of file gic_v3_its.hh.

◆ vmovp

Bitfield<37> Gicv3Its::vmovp

Definition at line 199 of file gic_v3_its.hh.

◆ vpeid

Gicv3Its::vpeid

Definition at line 270 of file gic_v3_its.hh.


The documentation for this class was generated from the following files:
Gicv3Its::BASER_ESZ
static const uint64_t BASER_ESZ
Definition: gic_v3_its.hh:120
Gicv3Its::BASER_TYPE
static const uint64_t BASER_TYPE
Definition: gic_v3_its.hh:119
Gicv3Its::BASER_SZ
static const uint64_t BASER_SZ
Definition: gic_v3_its.hh:121
Gicv3Its::BASER_INDIRECT
static const uint64_t BASER_INDIRECT
Definition: gic_v3_its.hh:118

Generated on Wed Sep 30 2020 14:02:25 for gem5 by doxygen 1.8.17