Go to the documentation of this file.
29 #ifndef __LEARNING_GEM5_PART2_SIMPLE_MEMOBJ_HH__
30 #define __LEARNING_GEM5_PART2_SIMPLE_MEMOBJ_HH__
33 #include "params/SimpleMemobj.hh"
104 {
panic(
"recvAtomic unimpl."); }
255 #endif // __LEARNING_GEM5_PART2_SIMPLE_MEMOBJ_HH__
CPUSidePort(const std::string &name, SimpleMemobj *owner)
Constructor.
SimpleMemobj * owner
The object that owns this object (SimpleMemobj)
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
Tick recvAtomic(PacketPtr pkt) override
Receive an atomic request packet from the request port.
bool recvTimingReq(PacketPtr pkt) override
Receive a timing request from the request port.
void sendRangeChange()
Tell the CPU side to ask for our memory ranges.
const std::string name() const
Return port name (for DPRINTF).
SimpleMemobj(const SimpleMemobjParams ¶ms)
constructor
PacketPtr blockedPacket
If we tried to send a packet and it was blocked, store it here.
const PortID InvalidPortID
PacketPtr blockedPacket
If we tried to send a packet and it was blocked, store it here.
AddrRangeList getAddrRanges() const override
Get a list of the non-overlapping address ranges the owner is responsible for.
A RequestPort is a specialisation of a Port, which implements the default protocol for the three diff...
void sendPacket(PacketPtr pkt)
Send a packet across this port.
bool handleResponse(PacketPtr pkt)
Handle the respone from the memory side.
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port with a given name and index.
const Params & params() const
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
void recvRangeChange() override
Called to receive an address range change from the peer responder port.
uint64_t Tick
Tick count type.
MemSidePort memPort
Instantiation of the memory-side port.
void sendPacket(PacketPtr pkt)
Send a packet across this port.
bool needRetry
True if the port needs to send a retry req.
Port on the memory-side that receives responses.
Abstract superclass for simulation objects.
Port on the CPU-side that receives requests.
bool handleRequest(PacketPtr pkt)
Handle the request from the CPU side.
void handleFunctional(PacketPtr pkt)
Handle a packet functionally.
A ResponsePort is a specialization of a port.
void recvReqRetry() override
Called by the response port if sendTimingReq was called on this request port (causing recvTimingReq t...
AddrRangeList getAddrRanges() const
Return the address ranges this memobj is responsible for.
bool blocked
True if this is currently blocked waiting for a response.
Ports are used to interface objects to each other.
void recvFunctional(PacketPtr pkt) override
Receive a functional request packet from the request port.
void trySendRetry()
Send a retry to the peer port only if it is needed.
bool recvTimingResp(PacketPtr pkt) override
Receive a timing response from the response port.
CPUSidePort instPort
Instantiation of the CPU-side ports.
SimpleMemobj * owner
The object that owns this object (SimpleMemobj)
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
A very simple memory object.
void recvRespRetry() override
Called by the request port if sendTimingResp was called on this response port (causing recvTimingResp...
#define panic(...)
This implements a cprintf based panic() function.
MemSidePort(const std::string &name, SimpleMemobj *owner)
Constructor.
Generated on Tue Sep 21 2021 12:25:25 for gem5 by doxygen 1.8.17