diff options
author | Gabe Black <gabeblack@google.com> | 2019-03-25 18:08:27 -0700 |
---|---|---|
committer | Gabe Black <gabeblack@google.com> | 2019-04-14 01:01:56 +0000 |
commit | f9e833b1aba5642df9411fdc5e1ee11456cc6d61 (patch) | |
tree | 6bc98d38ac5bc650804733965a139c3434225f6e /src | |
parent | 73e14fb3679e1063012b67a33c69473713a12304 (diff) | |
download | gem5-f9e833b1aba5642df9411fdc5e1ee11456cc6d61.tar.xz |
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>
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__ |