mem-cache: Create an address aware TempCacheBlk
[gem5.git] / src / mem / mem_checker.cc
index 0b80736602f93dbc7fc181ec38a2e5b7f3d2bd8a..810683ca49cb1773363afc212dd57f290f398af9 100644 (file)
  *          Marco Elver
  */
 
-#include <cassert>
-
 #include "mem/mem_checker.hh"
 
+#include <cassert>
+
 void
 MemChecker::WriteCluster::startWrite(MemChecker::Serial serial, Tick _start,
                                      uint8_t data)
@@ -195,6 +195,17 @@ MemChecker::ByteTracker::inExpectedData(Tick start, Tick complete, uint8_t data)
         }
         // Record non-matching, but possible value
         _lastExpectedData.push_back(last_obs.data);
+    } else {
+        // We have not seen any valid observation, and the only writes
+        // observed are overlapping, so anything (in particular the
+        // initialisation value) goes
+        // NOTE: We can overlap with multiple write clusters, here
+        if (!writeClusters.empty() && wc_overlap) {
+            // ensure that all write clusters really overlap this read
+            assert(writeClusters.begin()->start < complete &&
+                   writeClusters.rbegin()->complete > start);
+            return true;
+        }
     }
 
     if (_lastExpectedData.empty()) {