gem5
v20.1.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 } |
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 Member Functions | |
ItsCommand (Gicv3Its &_its) | |
~ItsCommand () | |
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 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 |
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) |
Static Protected Member Functions | |
static std::string | commandName (uint32_t cmd) |
Static Protected Attributes | |
static DispatchTable | cmdDispatcher |
Additional Inherited Members | |
Public Attributes inherited from Packet::SenderState | |
SenderState * | predecessor |
Protected Attributes inherited from ItsProcess | |
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 418 of file gic_v3_its.hh.
|
protected |
Definition at line 480 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 435 of file gic_v3_its.hh.
ItsCommand::ItsCommand | ( | Gicv3Its & | _its | ) |
Definition at line 310 of file gic_v3_its.cc.
References ItsProcess::its, Gicv3Its::pendingCommands, and ItsProcess::reinit().
ItsCommand::~ItsCommand | ( | ) |
Definition at line 319 of file gic_v3_its.cc.
References ItsProcess::its, Gicv3Its::pendingCommands, and Gicv3Its::pendingTranslations.
|
protected |
Definition at line 386 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().
|
inlineprotected |
Definition at line 533 of file gic_v3_its.hh.
References bits(), Gicv3Its::collectionOutOfRange(), ItsProcess::its, and ItsCommand::CommandEntry::raw.
Referenced by invall(), mapc(), mapi(), mapti(), and movi().
|
staticprotected |
Definition at line 328 of file gic_v3_its.cc.
References cmdDispatcher.
Referenced by readCommand().
|
inlineprotected |
Definition at line 518 of file gic_v3_its.hh.
References ItsCommand::CommandEntry::deviceId, Gicv3Its::deviceOutOfRange(), and ItsProcess::its.
Referenced by clear(), discard(), doInt(), inv(), mapd(), mapi(), mapti(), and movi().
|
protected |
Definition at line 421 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().
|
protected |
Definition at line 460 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().
|
inlineprotected |
Definition at line 513 of file gic_v3_its.hh.
References ItsCommand::CommandEntry::eventId, Gicv3Its::idOutOfRange(), and ItsProcess::its.
Referenced by clear(), discard(), doInt(), inv(), mapi(), mapti(), and movi().
|
protected |
Definition at line 495 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().
|
protected |
Definition at line 529 of file gic_v3_its.cc.
References bits(), collectionOutOfRange(), Gicv3Its::icid, Gicv3Its::incrementReadPointer(), ItsProcess::its, ItsCommand::CommandEntry::raw, ItsProcess::readIrqCollectionTable(), and ItsProcess::terminate().
|
overrideprotectedvirtual |
Implements ItsProcess.
Definition at line 335 of file gic_v3_its.cc.
References ArmISA::a, Gicv3Its::gitsCreadr, Gicv3Its::gitsCwriter, Gicv3Its::incrementReadPointer(), INITIAL_NOP, ItsProcess::its, processCommand(), readCommand(), and ItsProcess::terminate().
|
protected |
Definition at line 549 of file gic_v3_its.cc.
References bits(), collectionOutOfRange(), Gicv3Its::icid, Gicv3Its::incrementReadPointer(), ItsProcess::its, ItsCommand::CommandEntry::raw, ItsProcess::terminate(), and ItsProcess::writeIrqCollectionTable().
|
protected |
Definition at line 566 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().
|
protected |
Definition at line 582 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().
|
protected |
Definition at line 616 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().
|
protected |
Definition at line 652 of file gic_v3_its.cc.
References bits(), Gicv3Its::getRedistributor(), ItsProcess::its, Gicv3Its::moveAllPendingState(), and ItsCommand::CommandEntry::raw.
|
protected |
Definition at line 666 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().
|
protected |
Definition at line 373 of file gic_v3_its.cc.
References cmdDispatcher, panic, and ItsCommand::CommandEntry::type.
Referenced by main().
|
protected |
Definition at line 358 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 523 of file gic_v3_its.hh.
References bits(), ItsProcess::its, ItsCommand::CommandEntry::raw, and Gicv3Its::sizeOutOfRange().
Referenced by mapd().
|
protected |
Definition at line 727 of file gic_v3_its.cc.
References warn.
|
protected |
Definition at line 733 of file gic_v3_its.cc.
References panic.
|
protected |
Definition at line 739 of file gic_v3_its.cc.
References panic.
|
protected |
Definition at line 745 of file gic_v3_its.cc.
References panic.
|
protected |
Definition at line 751 of file gic_v3_its.cc.
References panic.
|
protected |
Definition at line 757 of file gic_v3_its.cc.
References panic.
|
protected |
Definition at line 763 of file gic_v3_its.cc.
References panic.
|
protected |
Definition at line 769 of file gic_v3_its.cc.
References panic.
|
staticprotected |
Definition at line 482 of file gic_v3_its.hh.
Referenced by commandName(), and processCommand().