gem5
v19.0.0.0
|
An ItsCommand is created whenever there is a new command in the command queue. More...
#include <gic_v3_its.hh>
Classes | |
union | CommandEntry |
struct | DispatchEntry |
Dispatch entry is a metadata struct which contains information about the command (like the name) and the function object implementing the command. More... | |
Public Types | |
enum | CommandType : uint32_t { CLEAR = 0x04, DISCARD = 0x0F, INT = 0x03, INV = 0x0C, INVALL = 0x0D, MAPC = 0x09, MAPD = 0x08, MAPI = 0x0B, MAPTI = 0x0A, MOVALL = 0x0E, MOVI = 0x01, SYNC = 0x05, VINVALL = 0x2D, VMAPI = 0x2B, VMAPP = 0x29, VMAPTI = 0x2A, VMOVI = 0x21, VMOVP = 0x22, VSYNC = 0x25 } |
![]() | |
using | DTE = Gicv3Its::DTE |
using | ITTE = Gicv3Its::ITTE |
using | CTE = Gicv3Its::CTE |
using | Coroutine = m5::Coroutine< PacketPtr, ItsAction > |
using | Yield = Coroutine::CallerType |
Public Member Functions | |
ItsCommand (Gicv3Its &_its) | |
~ItsCommand () | |
![]() | |
ItsProcess (Gicv3Its &_its) | |
virtual | ~ItsProcess () |
const std::string | name () const |
Returns the Gicv3Its name. More... | |
ItsAction | run (PacketPtr pkt) |
![]() | |
SenderState () | |
virtual | ~SenderState () |
Protected Types | |
using | DispatchTable = std::unordered_map< std::underlying_type< enum CommandType >::type, DispatchEntry > |
Protected Member Functions | |
void | main (Yield &yield) override |
void | readCommand (Yield &yield, CommandEntry &command) |
void | processCommand (Yield &yield, CommandEntry &command) |
void | clear (Yield &yield, CommandEntry &command) |
void | discard (Yield &yield, CommandEntry &command) |
void | mapc (Yield &yield, CommandEntry &command) |
void | mapd (Yield &yield, CommandEntry &command) |
void | mapi (Yield &yield, CommandEntry &command) |
void | mapti (Yield &yield, CommandEntry &command) |
void | movall (Yield &yield, CommandEntry &command) |
void | movi (Yield &yield, CommandEntry &command) |
void | sync (Yield &yield, CommandEntry &command) |
void | doInt (Yield &yield, CommandEntry &command) |
void | inv (Yield &yield, CommandEntry &command) |
void | invall (Yield &yield, CommandEntry &command) |
void | vinvall (Yield &yield, CommandEntry &command) |
void | vmapi (Yield &yield, CommandEntry &command) |
void | vmapp (Yield &yield, CommandEntry &command) |
void | vmapti (Yield &yield, CommandEntry &command) |
void | vmovi (Yield &yield, CommandEntry &command) |
void | vmovp (Yield &yield, CommandEntry &command) |
void | vsync (Yield &yield, CommandEntry &command) |
bool | idOutOfRange (CommandEntry &command, DTE dte) const |
bool | deviceOutOfRange (CommandEntry &command) const |
bool | sizeOutOfRange (CommandEntry &command) const |
bool | collectionOutOfRange (CommandEntry &command) const |
![]() | |
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) |
Static Protected Member Functions | |
static std::string | commandName (uint32_t cmd) |
Static Protected Attributes | |
static DispatchTable | cmdDispatcher |
Additional Inherited Members | |
![]() | |
SenderState * | predecessor |
![]() | |
Gicv3Its & | its |
An ItsCommand is created whenever there is a new command in the command queue.
Only one command can be executed per time. main will firstly read the command from memory and then it will process it.
Definition at line 420 of file gic_v3_its.hh.
|
protected |
Definition at line 482 of file gic_v3_its.hh.
enum ItsCommand::CommandType : uint32_t |
Enumerator | |
---|---|
CLEAR | |
DISCARD | |
INT | |
INV | |
INVALL | |
MAPC | |
MAPD | |
MAPI | |
MAPTI | |
MOVALL | |
MOVI | |
SYNC | |
VINVALL | |
VMAPI | |
VMAPP | |
VMAPTI | |
VMOVI | |
VMOVP | |
VSYNC |
Definition at line 437 of file gic_v3_its.hh.
ItsCommand::ItsCommand | ( | Gicv3Its & | _its | ) |
Definition at line 312 of file gic_v3_its.cc.
References ItsProcess::its, Gicv3Its::pendingCommands, and ItsProcess::reinit().
ItsCommand::~ItsCommand | ( | ) |
Definition at line 321 of file gic_v3_its.cc.
References ItsProcess::its, Gicv3Its::pendingCommands, and Gicv3Its::pendingTranslations.
|
protected |
Definition at line 388 of file gic_v3_its.cc.
References ItsCommand::CommandEntry::deviceId, deviceOutOfRange(), ItsCommand::CommandEntry::eventId, Gicv3Its::getRedistributor(), idOutOfRange(), Gicv3Its::incrementReadPointer(), ItsProcess::its, ItsProcess::readDeviceTable(), ItsProcess::readIrqCollectionTable(), ItsProcess::readIrqTranslationTable(), Gicv3Redistributor::setClrLPI(), and ItsProcess::terminate().
Referenced by ItsTranslation::translateLPI().
|
inlineprotected |
Definition at line 535 of file gic_v3_its.hh.
References bits(), and ItsCommand::CommandEntry::raw.
Referenced by invall(), mapc(), mapi(), mapti(), and movi().
|
staticprotected |
Definition at line 330 of file gic_v3_its.cc.
References cmdDispatcher.
Referenced by readCommand().
|
inlineprotected |
|
protected |
Definition at line 423 of file gic_v3_its.cc.
References ItsCommand::CommandEntry::deviceId, deviceOutOfRange(), ItsCommand::CommandEntry::eventId, Gicv3Its::getRedistributor(), idOutOfRange(), Gicv3Its::incrementReadPointer(), ItsProcess::its, ItsProcess::readDeviceTable(), ItsProcess::readIrqCollectionTable(), ItsProcess::readIrqTranslationTable(), Gicv3Redistributor::setClrLPI(), ItsProcess::terminate(), and ItsProcess::writeIrqTranslationTable().
Referenced by ItsTranslation::translateLPI().
|
protected |
Definition at line 462 of file gic_v3_its.cc.
References ItsCommand::CommandEntry::deviceId, deviceOutOfRange(), ItsCommand::CommandEntry::eventId, Gicv3Its::getRedistributor(), idOutOfRange(), Gicv3Its::incrementReadPointer(), ItsProcess::its, ItsProcess::readDeviceTable(), ItsProcess::readIrqCollectionTable(), ItsProcess::readIrqTranslationTable(), Gicv3Redistributor::setClrLPI(), and ItsProcess::terminate().
Referenced by ItsTranslation::translateLPI().
|
inlineprotected |
Definition at line 515 of file gic_v3_its.hh.
References ItsCommand::CommandEntry::eventId.
Referenced by clear(), discard(), doInt(), inv(), mapi(), mapti(), and movi().
|
protected |
Definition at line 497 of file gic_v3_its.cc.
References ItsCommand::CommandEntry::deviceId, deviceOutOfRange(), ItsCommand::CommandEntry::eventId, idOutOfRange(), Gicv3Its::incrementReadPointer(), ItsProcess::its, ItsProcess::readDeviceTable(), ItsProcess::readIrqCollectionTable(), ItsProcess::readIrqTranslationTable(), and ItsProcess::terminate().
Referenced by ItsTranslation::translateLPI().
|
protected |
Definition at line 531 of file gic_v3_its.cc.
References bits(), collectionOutOfRange(), Gicv3Its::icid, Gicv3Its::incrementReadPointer(), ItsProcess::its, ItsCommand::CommandEntry::raw, ItsProcess::readIrqCollectionTable(), and ItsProcess::terminate().
Referenced by ItsTranslation::translateLPI().
|
overrideprotectedvirtual |
Implements ItsProcess.
Definition at line 337 of file gic_v3_its.cc.
References ArmISA::a, ItsAction::delay, Gicv3Its::gitsCreadr, Gicv3Its::gitsCwriter, Gicv3Its::incrementReadPointer(), INITIAL_NOP, ItsProcess::its, ItsAction::pkt, processCommand(), readCommand(), ItsProcess::terminate(), and ItsAction::type.
|
protected |
Definition at line 551 of file gic_v3_its.cc.
References bits(), collectionOutOfRange(), Gicv3Its::icid, Gicv3Its::incrementReadPointer(), ItsProcess::its, ItsCommand::CommandEntry::raw, ItsProcess::terminate(), and ItsProcess::writeIrqCollectionTable().
Referenced by ItsTranslation::translateLPI().
|
protected |
Definition at line 568 of file gic_v3_its.cc.
References bits(), ItsCommand::CommandEntry::deviceId, deviceOutOfRange(), Gicv3Its::incrementReadPointer(), ItsProcess::its, mbits(), ItsCommand::CommandEntry::raw, sizeOutOfRange(), ItsProcess::terminate(), and ItsProcess::writeDeviceTable().
Referenced by ItsTranslation::translateLPI().
|
protected |
Definition at line 584 of file gic_v3_its.cc.
References bits(), collectionOutOfRange(), ItsCommand::CommandEntry::deviceId, deviceOutOfRange(), ItsCommand::CommandEntry::eventId, idOutOfRange(), Gicv3Its::incrementReadPointer(), ItsProcess::its, Gicv3Its::lpiOutOfRange(), ItsCommand::CommandEntry::raw, ItsProcess::readDeviceTable(), ItsProcess::readIrqTranslationTable(), ItsProcess::terminate(), and ItsProcess::writeIrqTranslationTable().
Referenced by ItsTranslation::translateLPI().
|
protected |
Definition at line 618 of file gic_v3_its.cc.
References bits(), collectionOutOfRange(), ItsCommand::CommandEntry::deviceId, deviceOutOfRange(), ItsCommand::CommandEntry::eventId, idOutOfRange(), Gicv3Its::incrementReadPointer(), ItsProcess::its, Gicv3Its::lpiOutOfRange(), ItsCommand::CommandEntry::raw, ItsProcess::readDeviceTable(), ItsProcess::readIrqTranslationTable(), ItsProcess::terminate(), and ItsProcess::writeIrqTranslationTable().
Referenced by ItsTranslation::translateLPI().
|
protected |
Definition at line 654 of file gic_v3_its.cc.
References bits(), Gicv3Its::getRedistributor(), ItsProcess::its, Gicv3Its::moveAllPendingState(), and ItsCommand::CommandEntry::raw.
Referenced by ItsTranslation::translateLPI().
|
protected |
Definition at line 668 of file gic_v3_its.cc.
References bits(), collectionOutOfRange(), ItsCommand::CommandEntry::deviceId, deviceOutOfRange(), ItsCommand::CommandEntry::eventId, Gicv3Its::getRedistributor(), idOutOfRange(), Gicv3Its::incrementReadPointer(), Gicv3Redistributor::isPendingLPI(), ItsProcess::its, ItsCommand::CommandEntry::raw, ItsProcess::readDeviceTable(), ItsProcess::readIrqCollectionTable(), ItsProcess::readIrqTranslationTable(), Gicv3Redistributor::setClrLPI(), ItsProcess::terminate(), and ItsProcess::writeIrqTranslationTable().
Referenced by ItsTranslation::translateLPI().
|
protected |
Definition at line 375 of file gic_v3_its.cc.
References cmdDispatcher, panic, and ItsCommand::CommandEntry::type.
Referenced by main().
|
protected |
Definition at line 360 of file gic_v3_its.cc.
References commandName(), ItsProcess::doRead(), DPRINTF, Gicv3Its::gitsCbaser, Gicv3Its::gitsCreadr, ItsProcess::its, ItsCommand::CommandEntry::raw, and ItsCommand::CommandEntry::type.
Referenced by main().
|
inlineprotected |
Definition at line 525 of file gic_v3_its.hh.
References bits(), and ItsCommand::CommandEntry::raw.
Referenced by mapd().
|
protected |
Definition at line 729 of file gic_v3_its.cc.
References warn.
Referenced by ItsTranslation::translateLPI().
|
protected |
Definition at line 735 of file gic_v3_its.cc.
References panic.
Referenced by ItsTranslation::translateLPI().
|
protected |
Definition at line 741 of file gic_v3_its.cc.
References panic.
Referenced by ItsTranslation::translateLPI().
|
protected |
Definition at line 747 of file gic_v3_its.cc.
References panic.
Referenced by ItsTranslation::translateLPI().
|
protected |
Definition at line 753 of file gic_v3_its.cc.
References panic.
Referenced by ItsTranslation::translateLPI().
|
protected |
Definition at line 759 of file gic_v3_its.cc.
References panic.
Referenced by ItsTranslation::translateLPI().
|
protected |
Definition at line 765 of file gic_v3_its.cc.
References panic.
Referenced by ItsTranslation::translateLPI().
|
protected |
Definition at line 771 of file gic_v3_its.cc.
References panic.
Referenced by ItsTranslation::translateLPI().
|
staticprotected |
Definition at line 484 of file gic_v3_its.hh.
Referenced by commandName(), processCommand(), and ItsTranslation::translateLPI().