summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Hansson <andreas.hansson@arm.com>2015-10-14 13:32:28 -0400
committerAndreas Hansson <andreas.hansson@arm.com>2015-10-14 13:32:28 -0400
commit2a1f49fae6f4399d976a551a1715709faf1b19da (patch)
tree3c92dfd853a54d08928702fe6cce94f7c83128f8
parent4453537eadb177bd7fd8c50e68e7b2baefc3e178 (diff)
downloadgem5-2a1f49fae6f4399d976a551a1715709faf1b19da.tar.xz
mem: Pass snoop retries through the CommMonitor
Allow the monitor to be placed after a snooping port, and do not fail on snoop retries, but instead pass them on to the slave port.
-rw-r--r--src/mem/comm_monitor.cc6
-rw-r--r--src/mem/comm_monitor.hh7
2 files changed, 13 insertions, 0 deletions
diff --git a/src/mem/comm_monitor.cc b/src/mem/comm_monitor.cc
index 85d7be2f4..fa1950be3 100644
--- a/src/mem/comm_monitor.cc
+++ b/src/mem/comm_monitor.cc
@@ -344,6 +344,12 @@ CommMonitor::recvTimingSnoopResp(PacketPtr pkt)
return masterPort.sendTimingSnoopResp(pkt);
}
+void
+CommMonitor::recvRetrySnoopResp()
+{
+ slavePort.sendRetrySnoopResp();
+}
+
bool
CommMonitor::isSnooping() const
{
diff --git a/src/mem/comm_monitor.hh b/src/mem/comm_monitor.hh
index df61b0b80..5ccce8037 100644
--- a/src/mem/comm_monitor.hh
+++ b/src/mem/comm_monitor.hh
@@ -167,6 +167,11 @@ class CommMonitor : public MemObject
mon.recvReqRetry();
}
+ void recvRetrySnoopResp()
+ {
+ mon.recvRetrySnoopResp();
+ }
+
private:
CommMonitor& mon;
@@ -248,6 +253,8 @@ class CommMonitor : public MemObject
bool recvTimingSnoopResp(PacketPtr pkt);
+ void recvRetrySnoopResp();
+
AddrRangeList getAddrRanges() const;
bool isSnooping() const;