diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mem/simple_mem.cc | 17 | ||||
-rw-r--r-- | src/mem/simple_mem.hh | 25 |
2 files changed, 24 insertions, 18 deletions
diff --git a/src/mem/simple_mem.cc b/src/mem/simple_mem.cc index 32fea1e89..297aa6135 100644 --- a/src/mem/simple_mem.cc +++ b/src/mem/simple_mem.cc @@ -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) { diff --git a/src/mem/simple_mem.hh b/src/mem/simple_mem.hh index c8c3db516..dda4aedb9 100644 --- a/src/mem/simple_mem.hh +++ b/src/mem/simple_mem.hh @@ -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__ |