|
gem5
v20.1.0.5
|
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().