diff options
Diffstat (limited to 'src/mem/cache')
-rw-r--r-- | src/mem/cache/tags/base_set_assoc.cc | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/src/mem/cache/tags/base_set_assoc.cc b/src/mem/cache/tags/base_set_assoc.cc index 728f5a5f9..61764fe91 100644 --- a/src/mem/cache/tags/base_set_assoc.cc +++ b/src/mem/cache/tags/base_set_assoc.cc @@ -85,24 +85,25 @@ BaseSetAssoc::BaseSetAssoc(const Params *p) // link in the data blocks for (unsigned j = 0; j < assoc; ++j) { - // locate next cache block - BlkType *blk = &blks[blkIndex]; - blk->data = &dataBlks[blkSize*blkIndex]; - ++blkIndex; + // Select block within the set to be linked + BlkType*& blk = sets[i].blks[j]; - // invalidate new cache block - blk->invalidate(); + // Locate next cache block + blk = &blks[blkIndex]; - //EGH Fix Me : do we need to initialize blk? + // Associate a data chunk to the block + blk->data = &dataBlks[blkSize*blkIndex]; - // Setting the tag to j is just to prevent long chains in the hash - // table; won't matter because the block is invalid + // 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; - blk->whenReady = 0; - blk->isTouched = false; - sets[i].blks[j]=blk; + + // Set its set and way blk->set = i; blk->way = j; + + // Update block index + ++blkIndex; } } } |