mem: Teach SimpleMem to return a MemBackdoor when appropriate.
If the back door SimpleMem inherits from AbstractMem has a pointer and is hence valid, SimpleMem will return that pointer when asked. Change-Id: I734daba48e4ae5b4ad8ac9a108e7b12b5e82803f Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17669 Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br> Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com> Maintainer: Jason Lowe-Power <jason@lowepower.com>
This commit is contained in:
@@ -80,6 +80,16 @@ SimpleMemory::recvAtomic(PacketPtr pkt)
|
||||
return getLatency();
|
||||
}
|
||||
|
||||
Tick
|
||||
SimpleMemory::recvAtomicBackdoor(PacketPtr pkt, MemBackdoorPtr &_backdoor)
|
||||
{
|
||||
Tick latency = recvAtomic(pkt);
|
||||
|
||||
if (backdoor.ptr())
|
||||
_backdoor = &backdoor;
|
||||
return latency;
|
||||
}
|
||||
|
||||
void
|
||||
SimpleMemory::recvFunctional(PacketPtr pkt)
|
||||
{
|
||||
@@ -271,6 +281,13 @@ SimpleMemory::MemoryPort::recvAtomic(PacketPtr pkt)
|
||||
return memory.recvAtomic(pkt);
|
||||
}
|
||||
|
||||
Tick
|
||||
SimpleMemory::MemoryPort::recvAtomicBackdoor(
|
||||
PacketPtr pkt, MemBackdoorPtr &_backdoor)
|
||||
{
|
||||
return memory.recvAtomicBackdoor(pkt, _backdoor);
|
||||
}
|
||||
|
||||
void
|
||||
SimpleMemory::MemoryPort::recvFunctional(PacketPtr pkt)
|
||||
{
|
||||
|
||||
@@ -84,27 +84,20 @@ class SimpleMemory : public AbstractMemory
|
||||
|
||||
class MemoryPort : public SlavePort
|
||||
{
|
||||
|
||||
private:
|
||||
|
||||
SimpleMemory& memory;
|
||||
|
||||
public:
|
||||
|
||||
MemoryPort(const std::string& _name, SimpleMemory& _memory);
|
||||
|
||||
protected:
|
||||
|
||||
Tick recvAtomic(PacketPtr pkt);
|
||||
|
||||
void recvFunctional(PacketPtr pkt);
|
||||
|
||||
bool recvTimingReq(PacketPtr pkt);
|
||||
|
||||
void recvRespRetry();
|
||||
|
||||
Tick recvAtomic(PacketPtr pkt) override;
|
||||
Tick recvAtomicBackdoor(
|
||||
PacketPtr pkt, MemBackdoorPtr &_backdoor) override;
|
||||
void recvFunctional(PacketPtr pkt) override;
|
||||
bool recvTimingReq(PacketPtr pkt) override;
|
||||
void recvRespRetry() override;
|
||||
AddrRangeList getAddrRanges() const;
|
||||
|
||||
};
|
||||
|
||||
MemoryPort port;
|
||||
@@ -192,15 +185,11 @@ class SimpleMemory : public AbstractMemory
|
||||
void init() override;
|
||||
|
||||
protected:
|
||||
|
||||
Tick recvAtomic(PacketPtr pkt);
|
||||
|
||||
Tick recvAtomicBackdoor(PacketPtr pkt, MemBackdoorPtr &_backdoor);
|
||||
void recvFunctional(PacketPtr pkt);
|
||||
|
||||
bool recvTimingReq(PacketPtr pkt);
|
||||
|
||||
void recvRespRetry();
|
||||
|
||||
};
|
||||
|
||||
#endif //__MEM_SIMPLE_MEMORY_HH__
|
||||
|
||||
Reference in New Issue
Block a user