|
gem5 v23.0.0.1
|
#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 | |
| void | serialize (CheckpointOut &cp) const override |
| Serialization stuff. | |
| void | unserialize (CheckpointIn &cp) override |
| Unserialize an object. | |
| 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. | |
| unsigned int | 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) | |
| void | serialize (CheckpointOut &cp) const override |
| Serialize an object. | |
| void | unserialize (CheckpointIn &cp) override |
| Unserialize an object. | |
Public Member Functions inherited from gem5::SimObject | |
| const Params & | params () const |
| SimObject (const Params &p) | |
| virtual | ~SimObject () |
| virtual void | init () |
| init() is called after all C++ SimObjects have been created and all ports are connected. | |
| 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 Port & | getPort (const std::string &if_name, PortID idx=InvalidPortID) |
| Get a port with a given name and index. | |
| 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 () |
| virtual void | serialize (CheckpointOut &cp) const =0 |
| Serialize an object. | |
| virtual void | unserialize (CheckpointIn &cp)=0 |
| Unserialize an object. | |
| 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 | resetStats () |
| Callback to reset stats. | |
| 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 (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? | |
| virtual AddrRangeList | getAddrRanges () const =0 |
| Every PIO device is obliged to provide an implementation that returns the address ranges the device responds to. | |
| virtual Tick | read (PacketPtr pkt)=0 |
| Pure virtual function that the device must implement. | |
| virtual Tick | write (PacketPtr pkt)=0 |
| Pure virtual function that the device must implement. | |
Protected Member Functions inherited from gem5::Drainable | |
| Drainable () | |
| virtual | ~Drainable () |
| virtual DrainState | drain ()=0 |
| Draining is the process of clearing out the states of SimObjects.These are the SimObjects that are partially executed or are partially in flight. | |
| virtual void | drainResume () |
| Resume execution after a successful drain. | |
| 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::sinic::Base::serialize(), gem5::PacketFifo::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, gem5::sinic::Device::VirtualReg::rxUnique, rxUnique, gem5::EventManager::schedule(), gem5::sinic::Device::VirtualReg::TxData, gem5::sinic::Device::VirtualReg::TxDone, txEvent, txFifo, txFull, txList, txPacket, txPacketBytes, txPacketOffset, txState, gem5::sinic::Device::VirtualReg::txUnique, txUnique, gem5::sinic::Base::unserialize(), gem5::PacketFifo::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, gem5::sinic::Device::VirtualReg::rxUnique, rxUnique, gem5::sinic::registers::Info::size, gem5::sinic::Device::VirtualReg::TxDone, gem5::sinic::Base::txEnable, txFifoBlock, txIdle, txKick(), txList, txState, gem5::sinic::TxStateStrings, gem5::sinic::Device::VirtualReg::txUnique, 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().