#include <string>
-#include "mem/cache/base.hh"
#include "base/intmath.hh"
+#include "mem/cache/base.hh"
+#include "mem/cache/tags/cacheset.hh"
#include "mem/cache/tags/lru.hh"
#include "sim/core.hh"
-#include "cacheset.hh"
using namespace std;
if (blk->contextSrc != -1) {
occupancies[blk->contextSrc % cache->numCpus()]--;
blk->contextSrc = -1;
+ } else {
+ occupancies[cache->numCpus()]--;
}
DPRINTF(CacheRepl, "set %x: selecting blk %x for replacement\n",
// deal with what we are bringing in
if (context_src != -1) {
occupancies[context_src % cache->numCpus()]++;
- blk->contextSrc = context_src;
+ } else {
+ occupancies[cache->numCpus()]++;
}
+ blk->contextSrc = context_src;
unsigned set = extractSet(addr);
sets[set].moveToHead(blk);
if (blk->contextSrc != -1) {
occupancies[blk->contextSrc % cache->numCpus()]--;
blk->contextSrc = -1;
+ } else {
+ occupancies[cache->numCpus()]--;
}
}
}
+void
+LRU::clearLocks()
+{
+ for (int i = 0; i < numBlocks; i++){
+ blks[i].clearLoadLocks();
+ }
+}
+
void
LRU::cleanupRefs()
{