mem: Pass snoop retries through the CommMonitor
authorAndreas Hansson <andreas.hansson@arm.com>
Wed, 14 Oct 2015 17:32:28 +0000 (13:32 -0400)
committerAndreas Hansson <andreas.hansson@arm.com>
Wed, 14 Oct 2015 17:32:28 +0000 (13:32 -0400)
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.

src/mem/comm_monitor.cc
src/mem/comm_monitor.hh

index 85d7be2f4c9b6dab8fb4b7a1914baceb35840000..fa1950be3f96539f8853032759cbb53f0178180f 100644 (file)
@@ -344,6 +344,12 @@ CommMonitor::recvTimingSnoopResp(PacketPtr pkt)
     return masterPort.sendTimingSnoopResp(pkt);
 }
 
+void
+CommMonitor::recvRetrySnoopResp()
+{
+    slavePort.sendRetrySnoopResp();
+}
+
 bool
 CommMonitor::isSnooping() const
 {
index df61b0b801c869e2909bedaecbdbcdd783e396d2..5ccce80370f218f1a8bfab4a7be67ed3d573f7bc 100644 (file)
@@ -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;