diff options
Diffstat (limited to 'src/mem/cache/tags/base_set_assoc.cc')
-rw-r--r-- | src/mem/cache/tags/base_set_assoc.cc | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/mem/cache/tags/base_set_assoc.cc b/src/mem/cache/tags/base_set_assoc.cc index f0ee2a5d8..5888d1f00 100644 --- a/src/mem/cache/tags/base_set_assoc.cc +++ b/src/mem/cache/tags/base_set_assoc.cc @@ -50,7 +50,6 @@ #include <string> #include "base/intmath.hh" -#include "sim/core.hh" BaseSetAssoc::BaseSetAssoc(const Params *p) :BaseTags(p), assoc(p->assoc), allocAssoc(p->assoc), @@ -92,6 +91,9 @@ BaseSetAssoc::BaseSetAssoc(const Params *p) // Associate a data chunk to the block blk->data = &dataBlks[blkSize*blkIndex]; + // Associate a replacement data entry to the block + blk->replacementData = replacementPolicy->instantiateEntry(); + // Setting the tag to j is just to prevent long chains in the // hash table; won't matter because the block is invalid blk->tag = j; @@ -106,6 +108,15 @@ BaseSetAssoc::BaseSetAssoc(const Params *p) } } +void +BaseSetAssoc::invalidate(CacheBlk *blk) +{ + BaseTags::invalidate(blk); + + // Invalidate replacement data + replacementPolicy->invalidate(blk->replacementData); +} + CacheBlk* BaseSetAssoc::findBlock(Addr addr, bool is_secure) const { |