mem: Adding verbose debug output in the memory system
[gem5.git] / src / mem / cache / tags / cacheset.cc
index dea1a6b457cbce1cdc2b7ed741833c92923fb203..8f96b947ac43757efece2eb0c077c2b198138ada 100644 (file)
@@ -66,3 +66,27 @@ CacheSet::moveToHead(CacheBlk *blk)
     } while (next != blk);
 }
 
+void
+CacheSet::moveToTail(CacheBlk *blk)
+{
+    // nothing to do if blk is already tail
+    if (blks[assoc-1] == blk)
+        return;
+
+    // write 'next' block into blks[i], moving from LRU to MRU
+    // until we overwrite the block we moved to tail.
+
+    // start by setting up to write 'blk' into tail
+    int i = assoc - 1;
+    CacheBlk *next = blk;
+
+    do {
+        assert(i >= 0);
+        // swap blks[i] and next
+        CacheBlk *tmp = blks[i];
+        blks[i] = next;
+        next = tmp;
+        --i;
+    } while (next != blk);
+}
+