mem-cache: Fix bug generated by 8282
authorDaniel R. Carvalho <odanrc@yahoo.com.br>
Tue, 6 Mar 2018 11:14:39 +0000 (12:14 +0100)
committerDaniel Carvalho <odanrc@yahoo.com.br>
Tue, 6 Mar 2018 17:24:05 +0000 (17:24 +0000)
Merge 1ae7fced4d32898531a6875a339ef00e43e20e66 generated
a bug in tagsInUse calculation.

Change-Id: I079e327a0a26a7968f2ed8e433dd6e790c80998b
Reviewed-on: https://gem5-review.googlesource.com/8781
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>

src/mem/cache/tags/base_set_assoc.hh

index 21a250e755024dc82d90a99e8381eac02931689c..44f68d5fcf2d6692672854571ca2d881acac8b7a 100644 (file)
@@ -239,8 +239,6 @@ public:
          uint32_t task_id = pkt->req->taskId();
 
          if (!blk->isTouched) {
-             tagsInUse++;
-             blk->isTouched = true;
              if (!warmedUp && tagsInUse.value() >= warmupBound) {
                  warmedUp = true;
                  warmupCycle = curTick();
@@ -260,6 +258,9 @@ public:
              blk->invalidate();
          }
 
+         // Previous block, if existed, has been removed, and now we have
+         // to insert the new one and mark it as touched
+         tagsInUse++;
          blk->isTouched = true;
 
          // Set tag for new block.  Caller is responsible for setting status.