gem5 v24.0.0.0
|
#include <sinic.hh>
Classes | |
struct | DeviceStats |
Statistics. More... | |
struct | VirtualReg |
Public Member Functions | |
bool | recvPacket (EthPacketPtr packet) |
device ethernet interface | |
void | transferDone () |
Port & | getPort (const std::string &if_name, PortID idx=InvalidPortID) override |
Get a port with a given name and index. | |
Tick | read (PacketPtr pkt) override |
Memory Interface. | |
Tick | write (PacketPtr pkt) override |
IPR read of device register. | |
virtual void | drainResume () override |
Resume execution after a successful drain. | |
void | prepareIO (ContextID cpu, int index) |
void | prepareRead (ContextID cpu, int index) |
void | prepareWrite (ContextID cpu, int index) |
void | resetStats () override |
Callback to reset stats. | |
void | serialize (CheckpointOut &cp) const override |
Serialization stuff. | |
void | unserialize (CheckpointIn &cp) override |
Unserialize an object. | |
Device (const Params &p) | |
~Device () | |
Public Member Functions inherited from gem5::sinic::Base | |
PARAMS (Sinic) | |
Construction/Destruction/Parameters. | |
Base (const Params &p) | |
Public Member Functions inherited from gem5::EtherDevBase | |
EtherDevBase (const Params ¶ms) | |
Public Member Functions inherited from gem5::EtherDevice | |
EtherDevice (const Params ¶ms) | |
Public Member Functions inherited from gem5::PciDevice | |
virtual Tick | writeConfig (PacketPtr pkt) |
Write to the PCI config space data that is stored locally. | |
virtual Tick | readConfig (PacketPtr pkt) |
Read from the PCI config space data that is stored locally. | |
Addr | pciToDma (Addr pci_addr) const |
void | intrPost () |
void | intrClear () |
uint8_t | interruptLine () const |
AddrRangeList | getAddrRanges () const override |
Determine the address ranges that this device responds to. | |
PciDevice (const PciDeviceParams ¶ms) | |
Constructor for PCI Dev. | |
void | serialize (CheckpointOut &cp) const override |
Serialize this object to the given output stream. | |
void | unserialize (CheckpointIn &cp) override |
Reconstruct the state of this object from a checkpoint. | |
const PciBusAddr & | busAddr () const |
Public Member Functions inherited from gem5::DmaDevice | |
DmaDevice (const Params &p) | |
virtual | ~DmaDevice ()=default |
void | dmaWrite (Addr addr, int size, Event *event, uint8_t *data, uint32_t sid, uint32_t ssid, Tick delay=0) |
void | dmaWrite (Addr addr, int size, Event *event, uint8_t *data, Tick delay=0) |
void | dmaRead (Addr addr, int size, Event *event, uint8_t *data, uint32_t sid, uint32_t ssid, Tick delay=0) |
void | dmaRead (Addr addr, int size, Event *event, uint8_t *data, Tick delay=0) |
bool | dmaPending () const |
void | init () override |
init() is called after all C++ SimObjects have been created and all ports are connected. | |
Addr | cacheBlockSize () const |
Port & | getPort (const std::string &if_name, PortID idx=InvalidPortID) override |
Get a port with a given name and index. | |
Public Member Functions inherited from gem5::PioDevice | |
PioDevice (const Params &p) | |
virtual | ~PioDevice () |
void | init () override |
init() is called after all C++ SimObjects have been created and all ports are connected. | |
Port & | getPort (const std::string &if_name, PortID idx=InvalidPortID) override |
Get a port with a given name and index. | |
Public Member Functions inherited from gem5::ClockedObject | |
ClockedObject (const ClockedObjectParams &p) | |
Public Member Functions inherited from gem5::SimObject | |
const Params & | params () const |
SimObject (const Params &p) | |
virtual | ~SimObject () |
virtual void | loadState (CheckpointIn &cp) |
loadState() is called on each SimObject when restoring from a checkpoint. | |
virtual void | initState () |
initState() is called on each SimObject when not restoring from a checkpoint. | |
virtual void | regProbePoints () |
Register probe points for this object. | |
virtual void | regProbeListeners () |
Register probe listeners for this object. | |
ProbeManager * | getProbeManager () |
Get the probe manager for this object. | |
virtual void | startup () |
startup() is the final initialization call before simulation. | |
DrainState | drain () override |
Provide a default implementation of the drain interface for objects that don't need draining. | |
virtual void | memWriteback () |
Write back dirty buffers to memory using functional writes. | |
virtual void | memInvalidate () |
Invalidate the contents of memory buffers. | |
void | serialize (CheckpointOut &cp) const override |
Serialize an object. | |
void | unserialize (CheckpointIn &cp) override |
Unserialize an object. | |
Public Member Functions inherited from gem5::EventManager | |
EventQueue * | eventQueue () 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. | |
void | setCurTick (Tick newVal) |
EventManager (EventManager &em) | |
Event manger manages events in the event queue. | |
EventManager (EventManager *em) | |
EventManager (EventQueue *eq) | |
Public Member Functions inherited from gem5::Serializable | |
Serializable () | |
virtual | ~Serializable () |
void | serializeSection (CheckpointOut &cp, const char *name) const |
Serialize an object into a new section. | |
void | serializeSection (CheckpointOut &cp, const std::string &name) const |
void | unserializeSection (CheckpointIn &cp, const char *name) |
Unserialize an a child object. | |
void | unserializeSection (CheckpointIn &cp, const std::string &name) |
Public Member Functions inherited from gem5::Drainable | |
DrainState | drainState () const |
Return the current drain state of an object. | |
virtual void | notifyFork () |
Notify a child process of a fork. | |
Public Member Functions inherited from gem5::statistics::Group | |
Group (Group *parent, const char *name=nullptr) | |
Construct a new statistics group. | |
virtual | ~Group () |
virtual void | regStats () |
Callback to set stat parameters. | |
virtual void | preDumpStats () |
Callback before stats are dumped. | |
void | addStat (statistics::Info *info) |
Register a stat with this group. | |
const std::map< std::string, Group * > & | getStatGroups () const |
Get all child groups associated with this object. | |
const std::vector< Info * > & | getStats () const |
Get all stats associated with this object. | |
void | addStatGroup (const char *name, Group *block) |
Add a stat block as a child of this block. | |
const Info * | resolveStat (std::string name) const |
Resolve a stat by its name within this group. | |
void | mergeStatGroup (Group *block) |
Merge the contents (stats & children) of a block to this block. | |
Group ()=delete | |
Group (const Group &)=delete | |
Group & | operator= (const Group &)=delete |
Public Member Functions inherited from gem5::Named | |
Named (const std::string &name_) | |
virtual | ~Named ()=default |
virtual std::string | name () const |
Public Member Functions inherited from gem5::Clocked | |
void | updateClockPeriod () |
Update the tick to the current tick. | |
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. | |
Cycles | curCycle () const |
Determine the current cycle, corresponding to a tick aligned to a clock edge. | |
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. | |
uint64_t | frequency () const |
Tick | clockPeriod () const |
double | voltage () const |
Cycles | ticksToCycles (Tick t) const |
Tick | cyclesToTicks (Cycles c) const |
Protected Types | |
enum | RxState { rxIdle , rxFifoBlock , rxBeginCopy , rxCopy , rxCopyDone } |
Receive State Machine States. More... | |
enum | TxState { txIdle , txFifoBlock , txBeginCopy , txCopy , txCopyDone } |
Transmit State Machine states. More... | |
typedef std::vector< VirtualReg > | VirtualRegs |
typedef std::list< unsigned > | VirtualList |
Protected Member Functions | |
uint8_t & | regData8 (Addr daddr) |
uint32_t & | regData32 (Addr daddr) |
uint64_t & | regData64 (Addr daddr) |
void | reset () |
void | rxKick () |
void | txKick () |
void | transmit () |
Retransmit event. | |
void | txEventTransmit () |
void | txDump () const |
void | rxDump () const |
bool | rxFilter (const EthPacketPtr &packet) |
receive address filter | |
void | changeConfig (uint32_t newconfig) |
device configuration | |
void | command (uint32_t command) |
void | rxDmaDone () |
DMA parameters. | |
void | txDmaDone () |
void | devIntrPost (uint32_t interrupts) |
Interrupt management. | |
void | devIntrClear (uint32_t interrupts=registers::Intr_All) |
void | devIntrChangeMask (uint32_t newmask) |
Protected Member Functions inherited from gem5::sinic::Base | |
void | cpuIntrPost (Tick when) |
void | cpuInterrupt () |
void | cpuIntrClear () |
bool | cpuIntrPending () const |
void | cpuIntrAck () |
Protected Member Functions inherited from gem5::PciDevice | |
bool | getBAR (Addr addr, int &num, Addr &offs) |
Which base address register (if any) maps the given address? | |
Protected Member Functions inherited from gem5::Drainable | |
Drainable () | |
virtual | ~Drainable () |
void | signalDrainDone () const |
Signal that an object is drained. | |
Protected Member Functions inherited from gem5::Clocked | |
Clocked (ClockDomain &clk_domain) | |
Create a clocked object and set the clock domain based on the parameters. | |
Clocked (Clocked &)=delete | |
Clocked & | operator= (Clocked &)=delete |
virtual | ~Clocked () |
Virtual destructor due to inheritance. | |
void | resetClock () const |
Reset the object's clock using the current global tick value. | |
virtual void | clockPeriodUpdated () |
A hook subclasses can implement so they can do any extra work that's needed when the clock rate is changed. | |
Private Attributes | |
gem5::sinic::Device::DeviceStats | sinicDeviceStats |
Additional Inherited Members | |
Public Types inherited from gem5::EtherDevBase | |
using | Params = EtherDevBaseParams |
Public Types inherited from gem5::EtherDevice | |
using | Params = EtherDeviceParams |
Public Types inherited from gem5::DmaDevice | |
typedef DmaDeviceParams | Params |
Public Types inherited from gem5::PioDevice | |
using | Params = PioDeviceParams |
Public Types inherited from gem5::ClockedObject | |
using | Params = ClockedObjectParams |
Parameters of ClockedObject. | |
Public Types inherited from gem5::SimObject | |
typedef SimObjectParams | Params |
Static Public Member Functions inherited from gem5::SimObject | |
static void | serializeAll (const std::string &cpt_dir) |
Create a checkpoint by serializing all SimObjects in the system. | |
static SimObject * | find (const char *name) |
Find the SimObject with the given name and return a pointer to it. | |
static void | setSimObjectResolver (SimObjectResolver *resolver) |
There is a single object name resolver, and it is only set when simulation is restoring from checkpoints. | |
static SimObjectResolver * | getSimObjectResolver () |
There is a single object name resolver, and it is only set when simulation is restoring from checkpoints. | |
Static Public Member Functions inherited from gem5::Serializable | |
static const std::string & | currentSection () |
Gets the fully-qualified name of the active section. | |
static void | generateCheckpointOut (const std::string &cpt_dir, std::ofstream &outstream) |
Generate a checkpoint file so that the serialization can be routed to it. | |
Public Attributes inherited from gem5::ClockedObject | |
PowerState * | powerState |
|
protected |
|
protected |
|
protected |
|
protected |
gem5::sinic::Device::Device | ( | const Params & | p | ) |
Definition at line 84 of file sinic.cc.
References txEventTransmit().
|
protected |
device configuration
Definition at line 562 of file sinic.cc.
References gem5::sinic::Base::cpuIntrClear(), gem5::sinic::Base::cpuIntrEnable, gem5::sinic::Base::cpuIntrPost(), gem5::curTick(), regs, gem5::sinic::Base::rxEnable, rxKick(), gem5::sinic::Base::txEnable, and txKick().
Referenced by write().
|
protected |
|
protected |
Definition at line 456 of file sinic.cc.
References gem5::sinic::Base::cpuIntrClear(), gem5::sinic::Base::cpuIntrPost(), gem5::curTick(), DPRINTF, and regs.
Referenced by write().
|
protected |
|
protected |
Interrupt management.
Definition at line 404 of file sinic.cc.
References gem5::sinic::Base::cpuIntrPost(), gem5::curTick(), DPRINTF, gem5::sinic::Base::intrDelay, panic, regs, rxEmpty, and txFull.
Referenced by command(), recvPacket(), rxKick(), transmit(), and txKick().
|
overridevirtual |
Resume execution after a successful drain.
Reimplemented from gem5::Drainable.
Definition at line 1187 of file sinic.cc.
References gem5::Drainable::drainResume(), rxKick(), and txKick().
|
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.
if_name | Port name |
idx | Index in the case of a VectorPort |
Reimplemented from gem5::SimObject.
Definition at line 127 of file sinic.cc.
References gem5::DmaDevice::getPort(), and gem5::sinic::Base::interface.
void gem5::sinic::Device::prepareIO | ( | ContextID | cpu, |
int | index ) |
Definition at line 136 of file sinic.cc.
References gem5::MipsISA::index, panic, and virtualRegs.
Referenced by prepareRead(), and prepareWrite().
void gem5::sinic::Device::prepareRead | ( | ContextID | cpu, |
int | index ) |
Definition at line 149 of file sinic.cc.
References gem5::PacketFifo::avail(), gem5::PacketFifo::begin(), gem5::PacketFifo::countPacketsAfter(), gem5::PacketFifo::empty(), gem5::MipsISA::index, gem5::PacketFifo::packets(), prepareIO(), regs, rxBusyCount, gem5::sinic::Device::VirtualReg::RxData, rxDirtyCount, gem5::sinic::Device::VirtualReg::RxDone, rxFifo, rxFifoPtr, rxLow, rxMappedCount, gem5::PacketFifo::size(), gem5::sinic::Device::VirtualReg::TxData, gem5::sinic::Device::VirtualReg::TxDone, txFifo, and virtualRegs.
Referenced by read().
void gem5::sinic::Device::prepareWrite | ( | ContextID | cpu, |
int | index ) |
Definition at line 190 of file sinic.cc.
References gem5::MipsISA::index, and prepareIO().
Referenced by write().
Memory Interface.
I/O read of device register.
Implements gem5::PioDevice.
Definition at line 199 of file sinic.cc.
References gem5::PciDevice::BARs, gem5::PciDevice::config, devIntrClear(), DPRINTF, gem5::Packet::getAddr(), gem5::Packet::getSize(), gem5::MipsISA::index, gem5::sinic::registers::Info::name, panic, PCI_CMD_MSE, gem5::PciDevice::pioDelay, prepareRead(), gem5::sinic::registers::Info::read, gem5::X86ISA::reg, regData32(), regData64(), gem5::sinic::regInfo(), gem5::sinic::regValid(), gem5::Packet::req, gem5::Packet::setLE(), gem5::sinic::registers::Info::size, gem5::sinic::registers::VirtualMask, and gem5::sinic::registers::VirtualShift.
bool gem5::sinic::Device::recvPacket | ( | EthPacketPtr | packet | ) |
device ethernet interface
Definition at line 1149 of file sinic.cc.
References gem5::PacketFifo::avail(), devIntrPost(), DPRINTF, gem5::PacketFifo::end(), gem5::EtherDevice::etherDeviceStats, gem5::PacketFifo::push(), regs, gem5::EtherDevice::EtherDeviceStats::rxBytes, gem5::sinic::Base::rxEnable, rxFifo, rxFifoPtr, rxFilter(), rxKick(), gem5::EtherDevice::EtherDeviceStats::rxPackets, and gem5::PacketFifo::size().
Referenced by gem5::sinic::Interface::recvPacket().
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
Definition at line 174 of file sinic.hh.
References regs.
Referenced by regData32(), and regData64().
|
protected |
Definition at line 604 of file sinic.cc.
References gem5::PacketFifo::clear(), gem5::PacketFifo::end(), gem5::ArmISA::i, panic, gem5::SimObject::params(), regs, rxActive, rxBusy, rxBusyCount, rxDirtyCount, rxEmpty, rxFifo, rxFifoPtr, rxIdle, rxList, rxLow, rxMappedCount, rxState, txFifo, txFull, txIdle, txList, txState, and virtualRegs.
Referenced by command().
|
overridevirtual |
Callback to reset stats.
Reimplemented from gem5::statistics::Group.
Definition at line 119 of file sinic.cc.
References gem5::sinic::Device::DeviceStats::_maxVnicDistance, gem5::statistics::Group::resetStats(), and sinicDeviceStats.
|
protected |
|
protected |
|
protected |
|
protected |
Definition at line 690 of file sinic.cc.
References gem5::sinic::Device::DeviceStats::_maxVnicDistance, gem5::PacketFifo::check(), gem5::networking::cksum(), gem5::PacketFifo::countPacketsBefore(), gem5::curTick(), devIntrPost(), gem5::DmaDevice::dmaPending(), gem5::DmaDevice::dmaWrite(), DPRINTF, gem5::Drainable::drainState(), gem5::PacketFifo::empty(), gem5::PacketFifo::end(), gem5::EtherDevice::etherDeviceStats, gem5::X86ISA::exit, gem5::ArmISA::i, gem5::sinic::Device::DeviceStats::maxVnicDistance, gem5::sinic::Device::DeviceStats::numVnicDistance, panic, gem5::PciDevice::pciToDma(), regs, gem5::PacketFifo::remove(), gem5::Running, rxActive, rxBeginCopy, rxBusy, rxBusyCount, rxCopy, rxCopyDone, gem5::sinic::Device::VirtualReg::RxData, rxDirtyCount, rxDmaAddr, rxDmaData, rxDmaEvent, rxDmaLen, gem5::sinic::Device::VirtualReg::RxDone, gem5::sinic::Device::VirtualReg::rxDoneData, rxEmpty, rxFifo, rxFifoBlock, rxFifoPtr, rxIdle, gem5::sinic::Device::VirtualReg::rxIndex, gem5::EtherDevice::EtherDeviceStats::rxIpChecksums, rxKickTick, rxList, rxLow, rxMappedCount, gem5::sinic::Device::VirtualReg::rxPacketBytes, gem5::sinic::Device::VirtualReg::rxPacketOffset, rxState, gem5::sinic::RxStateStrings, gem5::EtherDevice::EtherDeviceStats::rxTcpChecksums, gem5::EtherDevice::EtherDeviceStats::rxUdpChecksums, gem5::sinic::Device::VirtualReg::rxUnique, sinicDeviceStats, gem5::PacketFifo::size(), gem5::ArmISA::status, gem5::sinic::Device::DeviceStats::totalVnicDistance, and virtualRegs.
Referenced by changeConfig(), drainResume(), recvPacket(), rxDmaDone(), txDmaDone(), and write().
|
overridevirtual |
Serialization stuff.
Reimplemented from gem5::sinic::Base.
Definition at line 1247 of file sinic.cc.
References gem5::PacketFifo::begin(), gem5::X86ISA::count, gem5::PacketFifo::countPacketsBefore(), gem5::csprintf(), gem5::curTick(), gem5::PacketFifo::end(), gem5::ArmISA::i, panic, gem5::paramOut(), gem5::X86ISA::reg, regs, rxActive, rxBusy, rxBusyCount, rxCopy, gem5::sinic::Device::VirtualReg::RxData, rxDirtyCount, gem5::sinic::Device::VirtualReg::RxDone, gem5::sinic::Device::VirtualReg::rxDoneData, rxEmpty, rxFifo, rxFifoPtr, gem5::sinic::Device::VirtualReg::rxIndex, rxList, rxLow, rxMappedCount, gem5::sinic::Device::VirtualReg::rxPacketBytes, gem5::sinic::Device::VirtualReg::rxPacketOffset, rxState, gem5::sinic::RxStateStrings, gem5::Event::scheduled(), gem5::PacketFifo::serialize(), gem5::sinic::Base::serialize(), SERIALIZE_SCALAR, txCopy, gem5::sinic::Device::VirtualReg::TxData, gem5::sinic::Device::VirtualReg::TxDone, txEvent, txFifo, txFull, txList, txPacket, txPacketBytes, txPacketOffset, txState, gem5::sinic::TxStateStrings, virtualRegs, and gem5::Event::when().
void gem5::sinic::Device::transferDone | ( | ) |
Definition at line 1125 of file sinic.cc.
References gem5::Clocked::clockEdge(), DPRINTF, gem5::PacketFifo::empty(), gem5::EventManager::reschedule(), txEvent, and txFifo.
Referenced by gem5::sinic::Interface::sendDone().
|
protected |
Retransmit event.
Definition at line 961 of file sinic.cc.
References gem5::PacketFifo::avail(), DDUMP, devIntrPost(), DPRINTF, gem5::PacketFifo::empty(), gem5::EtherDevice::etherDeviceStats, gem5::PacketFifo::front(), gem5::sinic::Base::interface, gem5::PacketFifo::pop(), regs, gem5::EtherInt::sendPacket(), gem5::PacketFifo::size(), gem5::EtherDevice::EtherDeviceStats::txBytes, txFifo, and gem5::EtherDevice::EtherDeviceStats::txPackets.
Referenced by txEventTransmit(), and txKick().
|
protected |
|
protected |
|
inlineprotected |
Definition at line 211 of file sinic.hh.
References transmit(), txFifoBlock, txKick(), and txState.
Referenced by Device().
|
protected |
Definition at line 1007 of file sinic.cc.
References gem5::PacketFifo::avail(), gem5::networking::cksum(), gem5::curTick(), devIntrPost(), gem5::DmaDevice::dmaPending(), gem5::DmaDevice::dmaRead(), DPRINTF, gem5::Drainable::drainState(), gem5::EtherDevice::etherDeviceStats, gem5::X86ISA::exit, panic, gem5::PciDevice::pciToDma(), gem5::PacketFifo::push(), regs, gem5::Running, gem5::PacketFifo::size(), gem5::networking::UdpHdr::sum(), transmit(), txBeginCopy, txCopy, txCopyDone, gem5::sinic::Device::VirtualReg::TxData, txDmaAddr, txDmaData, txDmaEvent, txDmaLen, gem5::sinic::Device::VirtualReg::TxDone, txFifo, txFifoBlock, txFull, txIdle, gem5::EtherDevice::EtherDeviceStats::txIpChecksums, txKickTick, txList, txPacket, txPacketOffset, txState, gem5::sinic::TxStateStrings, gem5::EtherDevice::EtherDeviceStats::txTcpChecksums, gem5::EtherDevice::EtherDeviceStats::txUdpChecksums, and virtualRegs.
Referenced by changeConfig(), drainResume(), rxDmaDone(), txDmaDone(), txEventTransmit(), and write().
|
overridevirtual |
Unserialize an object.
Read an object's state from the current checkpoint section.
cp | Checkpoint state |
Reimplemented from gem5::sinic::Base.
Definition at line 1362 of file sinic.cc.
References gem5::PacketFifo::begin(), gem5::csprintf(), gem5::curTick(), gem5::PacketFifo::end(), gem5::ArmISA::i, gem5::paramIn(), gem5::PioDevice::pioPort, gem5::X86ISA::reg, regs, rxActive, rxBusy, rxBusyCount, gem5::sinic::Device::VirtualReg::RxData, rxDirtyCount, gem5::sinic::Device::VirtualReg::RxDone, gem5::sinic::Device::VirtualReg::rxDoneData, rxEmpty, rxFifo, rxFifoPtr, gem5::sinic::Device::VirtualReg::rxIndex, rxList, rxLow, rxMappedCount, gem5::sinic::Device::VirtualReg::rxPacketBytes, gem5::sinic::Device::VirtualReg::rxPacketOffset, rxState, rxUnique, gem5::sinic::Device::VirtualReg::rxUnique, gem5::EventManager::schedule(), gem5::sinic::Device::VirtualReg::TxData, gem5::sinic::Device::VirtualReg::TxDone, txEvent, txFifo, txFull, txList, txPacket, txPacketBytes, txPacketOffset, txState, txUnique, gem5::sinic::Device::VirtualReg::txUnique, gem5::PacketFifo::unserialize(), gem5::sinic::Base::unserialize(), UNSERIALIZE_SCALAR, and virtualRegs.
IPR read of device register.
Fault Device::iprRead(Addr daddr, ContextID cpu, uint64_t &result) { if (!regValid(daddr)) panic("invalid address: da=%#x", daddr);
const registers::Info &info = regInfo(daddr); if (!info.read) panic("reading %s (write only): cpu=%d da=%#x", info.name, cpu, daddr);
DPRINTF(EthernetPIO, "IPR read %s: cpu=%d da=%#x\n", info.name, cpu, daddr);
prepareRead(cpu, 0);
if (info.size == 4) result = regData32(daddr);
if (info.size == 8) result = regData64(daddr);
DPRINTF(EthernetPIO, "IPR read %s: cpu=%s da=%#x val=%#x\n", info.name, cpu, result);
return NoFault; } I/O write of device register
Implements gem5::PioDevice.
Definition at line 290 of file sinic.cc.
References gem5::PciDevice::BARs, changeConfig(), command(), gem5::PciDevice::config, devIntrChangeMask(), devIntrClear(), DPRINTF, gem5::PacketFifo::end(), gem5::Packet::getAddr(), gem5::Packet::getLE(), gem5::Packet::getSize(), gem5::MipsISA::index, gem5::sinic::registers::Info::name, panic, PCI_CMD_MSE, gem5::PciDevice::pioDelay, prepareWrite(), gem5::sinic::regInfo(), regs, gem5::sinic::regValid(), gem5::Packet::req, rxBusy, rxBusyCount, gem5::sinic::Device::VirtualReg::RxData, gem5::sinic::Device::VirtualReg::RxDone, gem5::sinic::Base::rxEnable, rxFifo, rxFifoBlock, rxIdle, gem5::sinic::Device::VirtualReg::rxIndex, rxKick(), rxList, rxState, gem5::sinic::RxStateStrings, rxUnique, gem5::sinic::Device::VirtualReg::rxUnique, gem5::sinic::registers::Info::size, gem5::sinic::Device::VirtualReg::TxDone, gem5::sinic::Base::txEnable, txFifoBlock, txIdle, txKick(), txList, txState, gem5::sinic::TxStateStrings, txUnique, gem5::sinic::Device::VirtualReg::txUnique, gem5::sinic::registers::VirtualMask, virtualRegs, gem5::sinic::registers::VirtualShift, and gem5::sinic::registers::Info::write.
struct { ... } gem5::sinic::Device::regs |
device register file
Referenced by changeConfig(), devIntrChangeMask(), devIntrClear(), devIntrPost(), prepareRead(), recvPacket(), regData8(), reset(), rxFilter(), rxKick(), serialize(), transmit(), txKick(), unserialize(), and write().
|
protected |
Definition at line 167 of file sinic.hh.
Referenced by reset(), rxKick(), serialize(), and unserialize().
|
protected |
Definition at line 166 of file sinic.hh.
Referenced by reset(), rxKick(), serialize(), unserialize(), and write().
|
protected |
Definition at line 170 of file sinic.hh.
Referenced by prepareRead(), reset(), rxKick(), serialize(), unserialize(), and write().
|
protected |
Definition at line 172 of file sinic.hh.
Referenced by prepareRead(), reset(), rxKick(), serialize(), and unserialize().
|
protected |
Definition at line 184 of file sinic.hh.
Referenced by rxDmaDone(), and rxKick().
|
protected |
Definition at line 185 of file sinic.hh.
Referenced by rxDmaDone(), and rxKick().
|
protected |
|
protected |
Definition at line 186 of file sinic.hh.
Referenced by rxDmaDone(), and rxKick().
|
protected |
Definition at line 182 of file sinic.hh.
Referenced by devIntrPost(), reset(), rxKick(), serialize(), and unserialize().
|
protected |
Definition at line 180 of file sinic.hh.
Referenced by prepareRead(), recvPacket(), reset(), rxKick(), serialize(), unserialize(), and write().
|
protected |
Definition at line 181 of file sinic.hh.
Referenced by prepareRead(), recvPacket(), reset(), rxKick(), serialize(), and unserialize().
|
protected |
|
protected |
Definition at line 165 of file sinic.hh.
Referenced by reset(), rxKick(), serialize(), unserialize(), and write().
|
protected |
Definition at line 183 of file sinic.hh.
Referenced by prepareRead(), reset(), rxKick(), serialize(), and unserialize().
|
protected |
Definition at line 171 of file sinic.hh.
Referenced by prepareRead(), reset(), rxKick(), serialize(), and unserialize().
|
protected |
Definition at line 179 of file sinic.hh.
Referenced by reset(), rxDmaDone(), rxKick(), serialize(), txDmaDone(), unserialize(), and write().
|
protected |
Definition at line 162 of file sinic.hh.
Referenced by unserialize(), and write().
|
private |
Referenced by resetStats(), and rxKick().
|
protected |
Definition at line 194 of file sinic.hh.
Referenced by txDmaDone(), and txKick().
|
protected |
Definition at line 195 of file sinic.hh.
Referenced by txDmaDone(), and txKick().
|
protected |
|
protected |
Definition at line 196 of file sinic.hh.
Referenced by txDmaDone(), and txKick().
|
protected |
Definition at line 217 of file sinic.hh.
Referenced by serialize(), transferDone(), and unserialize().
|
protected |
Definition at line 189 of file sinic.hh.
Referenced by prepareRead(), reset(), serialize(), transferDone(), transmit(), txKick(), and unserialize().
|
protected |
Definition at line 190 of file sinic.hh.
Referenced by devIntrPost(), reset(), serialize(), txKick(), and unserialize().
|
protected |
|
protected |
Definition at line 168 of file sinic.hh.
Referenced by reset(), serialize(), txKick(), unserialize(), and write().
|
protected |
Definition at line 191 of file sinic.hh.
Referenced by serialize(), txKick(), and unserialize().
|
protected |
Definition at line 193 of file sinic.hh.
Referenced by serialize(), and unserialize().
|
protected |
Definition at line 192 of file sinic.hh.
Referenced by serialize(), txKick(), and unserialize().
|
protected |
Definition at line 188 of file sinic.hh.
Referenced by reset(), rxDmaDone(), serialize(), txDmaDone(), txEventTransmit(), txKick(), unserialize(), and write().
|
protected |
Definition at line 163 of file sinic.hh.
Referenced by unserialize(), and write().
|
protected |
Definition at line 164 of file sinic.hh.
Referenced by prepareIO(), prepareRead(), reset(), rxKick(), serialize(), txKick(), unserialize(), and write().