Go to the documentation of this file.
38 #ifndef __MEM_ADDR_MAPPER_HH__
39 #define __MEM_ADDR_MAPPER_HH__
46 #include "params/AddrMapper.hh"
47 #include "params/RangeAddrMapper.hh"
324 #endif //__MEM_ADDR_MAPPER_HH__
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
Addr remapAddr(Addr addr) const override
This function does the actual remapping of one address to another.
void recvFunctional(PacketPtr pkt) override
Receive a functional request packet from the peer.
void recvTimingSnoopReq(PacketPtr pkt) override
Receive a timing snoop request from the peer.
void recvMemBackdoorReq(const MemBackdoorReq &req, MemBackdoorPtr &backdoor) override
Receive a request for a back door to a range of memory.
bool recvTimingReq(PacketPtr pkt)
Tick recvAtomicBackdoor(PacketPtr pkt, MemBackdoorPtr &backdoor)
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port with a given name and index.
std::vector< AddrRange > remappedRanges
This contains a list of ranges that addresses should be remapped to.
bool recvTimingResp(PacketPtr pkt)
void init() override
init() is called after all C++ SimObjects have been created and all ports are connected.
AddrMapperSenderState(Addr _origAddr)
Construct a new sender state to remember the original address.
Tick recvAtomicBackdoor(PacketPtr pkt, MemBackdoorPtr &backdoor) override
Receive an atomic request packet from the peer, and optionally provide a backdoor to the data being a...
bool recvTimingResp(PacketPtr pkt) override
Receive a timing response from the peer.
Tick recvAtomic(PacketPtr pkt) override
Receive an atomic request packet from the peer.
~AddrMapperSenderState()
Destructor.
MapperResponsePort(const std::string &_name, AddrMapper &_mapper)
void recvRangeChange() override
Called to receive an address range change from the peer response port.
const PortID InvalidPortID
MapperRequestPort memSidePort
Instance of request port, facing the memory side.
bool recvTimingSnoopResp(PacketPtr pkt) override
Receive a timing snoop response from the peer.
A RequestPort is a specialisation of a Port, which implements the default protocol for the three diff...
virtual MemBackdoorPtr getRevertedBackdoor(MemBackdoorPtr &backdoor, const AddrRange &range)=0
This function returns a backdoor that fulfills the initiator request, based on the target backdoor at...
virtual Addr remapAddr(Addr addr) const =0
This function does the actual remapping of one address to another.
Tick recvAtomicSnoop(PacketPtr pkt)
~RangeAddrMapper()=default
const Params & params() const
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
virtual AddrRangeList getAddrRanges() const =0
MemBackdoorPtr getRevertedBackdoor(MemBackdoorPtr &backdoor, const AddrRange &range) override
This function returns a backdoor that fulfills the initiator request, based on the target backdoor at...
uint64_t Tick
Tick count type.
AddrRangeList getAddrRanges() const override
Abstract superclass for simulation objects.
A virtual base opaque structure used to hold state associated with the packet (e.g....
void recvReqRetry() override
Called by the peer if sendTimingReq was called on this peer (causing recvTimingReq to be called on th...
void init() override
init() is called after all C++ SimObjects have been created and all ports are connected.
BackdoorManager backdoorManager
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
bool recvTimingSnoopResp(PacketPtr pkt)
void sendRangeChange() const
Called by the owner to send a range change.
void recvTimingSnoopReq(PacketPtr pkt)
void recvFunctional(PacketPtr pkt)
void recvRangeChange() override
Range address mapper that maps a set of original ranges to a set of remapped ranges,...
A ResponsePort is a specialization of a port.
virtual void recvRangeChange()
Ports are used to interface objects to each other.
MapperResponsePort cpuSidePort
Instance of response port, i.e.
This class manages the backdoors for RangeAddrMapper.
void recvRespRetry() override
Called by the peer if sendTimingResp was called on this protocol (causing recvTimingResp to be called...
An address mapper changes the packet addresses in going from the response port side of the mapper to ...
void recvFunctionalSnoop(PacketPtr pkt)
AddrRangeList getAddrRanges() const override
Get a list of the non-overlapping address ranges the owner is responsible for.
MapperRequestPort(const std::string &_name, AddrMapper &_mapper)
bool recvTimingReq(PacketPtr pkt) override
Receive a timing request from the peer.
bool isSnooping() const override
Determine if this request port is snooping or not.
Addr origAddr
The original address the packet was destined for.
The AddrRange class encapsulates an address range, and supports a number of tests to check if two ran...
void recvMemBackdoorReq(const MemBackdoorReq &req, MemBackdoorPtr &backdoor)
Tick recvAtomic(PacketPtr pkt)
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Tick recvAtomicSnoop(PacketPtr pkt) override
Receive an atomic snoop request packet from our peer.
virtual ~AddrMapper()=default
std::vector< AddrRange > originalRanges
This contains a list of ranges the should be remapped.
void recvFunctionalSnoop(PacketPtr pkt) override
Receive a functional snoop request packet from the peer.
AddrMapper(const AddrMapperParams ¶ms)
RangeAddrMapper(const RangeAddrMapperParams &p)
Generated on Sun Jul 30 2023 01:56:57 for gem5 by doxygen 1.8.17