summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mem/simple_mem.cc17
-rw-r--r--src/mem/simple_mem.hh25
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__