gem5
v20.1.0.0
|
An ItsTranslation is created whenever a peripheral writes a message in GITS_TRANSLATER (MSI). More...
#include <gic_v3_its.hh>
Public Member Functions | |
ItsTranslation (Gicv3Its &_its) | |
~ItsTranslation () | |
Public Member Functions inherited from ItsProcess | |
ItsProcess (Gicv3Its &_its) | |
virtual | ~ItsProcess () |
const std::string | name () const |
Returns the Gicv3Its name. More... | |
ItsAction | run (PacketPtr pkt) |
Public Member Functions inherited from Packet::SenderState | |
SenderState () | |
virtual | ~SenderState () |
Protected Member Functions | |
void | main (Yield &yield) override |
std::pair< uint32_t, Gicv3Redistributor * > | translateLPI (Yield &yield, uint32_t device_id, uint32_t event_id) |
Protected Member Functions inherited from ItsProcess | |
void | reinit () |
void | writeDeviceTable (Yield &yield, uint32_t device_id, DTE dte) |
void | writeIrqTranslationTable (Yield &yield, const Addr itt_base, uint32_t event_id, ITTE itte) |
void | writeIrqCollectionTable (Yield &yield, uint32_t collection_id, CTE cte) |
uint64_t | readDeviceTable (Yield &yield, uint32_t device_id) |
uint64_t | readIrqTranslationTable (Yield &yield, const Addr itt_base, uint32_t event_id) |
uint64_t | readIrqCollectionTable (Yield &yield, uint32_t collection_id) |
void | doRead (Yield &yield, Addr addr, void *ptr, size_t size) |
void | doWrite (Yield &yield, Addr addr, void *ptr, size_t size) |
void | terminate (Yield &yield) |
Additional Inherited Members | |
Public Types inherited from ItsProcess | |
using | DTE = Gicv3Its::DTE |
using | ITTE = Gicv3Its::ITTE |
using | CTE = Gicv3Its::CTE |
using | Coroutine = m5::Coroutine< PacketPtr, ItsAction > |
using | Yield = Coroutine::CallerType |
Public Attributes inherited from Packet::SenderState | |
SenderState * | predecessor |
Protected Attributes inherited from ItsProcess | |
Gicv3Its & | its |
An ItsTranslation is created whenever a peripheral writes a message in GITS_TRANSLATER (MSI).
In this case main will simply do the table walks until it gets a redistributor and an INTID. It will then raise the LPI interrupt to the target redistributor.
Definition at line 399 of file gic_v3_its.hh.
ItsTranslation::ItsTranslation | ( | Gicv3Its & | _its | ) |
Definition at line 216 of file gic_v3_its.cc.
References ItsProcess::its, Gicv3Its::pendingTranslations, and ItsProcess::reinit().
ItsTranslation::~ItsTranslation | ( | ) |
Definition at line 224 of file gic_v3_its.cc.
References ItsProcess::its, Gicv3Its::pendingCommands, and Gicv3Its::pendingTranslations.
|
overrideprotectedvirtual |
Implements ItsProcess.
Definition at line 233 of file gic_v3_its.cc.
References m5::Coroutine< Arg, Ret >::CallerType::get(), Packet::getLE(), Gicv3Its::gitsTranslater, ItsProcess::its, Packet::req, Gicv3Redistributor::setClrLPI(), ItsProcess::terminate(), and translateLPI().
|
protected |
Definition at line 257 of file gic_v3_its.cc.
References Gicv3Its::collectionOutOfRange(), Gicv3Its::deviceOutOfRange(), Gicv3Its::getRedistributor(), Gicv3Its::idOutOfRange(), ItsProcess::its, ItsProcess::readDeviceTable(), ItsProcess::readIrqCollectionTable(), ItsProcess::readIrqTranslationTable(), and ItsProcess::terminate().
Referenced by main().