306,310c306
< if (old_blk->isDirty() || writebackClean)
< writebacks.push_back(writebackBlk(old_blk));
< else
< writebacks.push_back(cleanEvictBlk(old_blk));
< invalidateBlock(old_blk);
---
> evictBlock(old_blk, writebacks);
1251,1253c1247
< tempBlockWriteback = (blk->isDirty() || writebackClean) ?
< writebackBlk(blk) : cleanEvictBlk(blk);
< invalidateBlock(blk);
---
> tempBlockWriteback = evictBlock(blk);
1646,1649c1640
< PacketPtr wb_pkt = tempBlock->isDirty() || writebackClean ?
< writebackBlk(blk) : cleanEvictBlk(blk);
< writebacks.push_back(wb_pkt);
< invalidateBlock(tempBlock);
---
> evictBlock(blk, writebacks);
1660a1652,1671
> Cache::evictBlock(CacheBlk *blk)
> {
> PacketPtr pkt = (blk->isDirty() || writebackClean) ?
> writebackBlk(blk) : cleanEvictBlk(blk);
>
> invalidateBlock(blk);
>
> return pkt;
> }
>
> void
> Cache::evictBlock(CacheBlk *blk, PacketList &writebacks)
> {
> PacketPtr pkt = evictBlock(blk);
> if (pkt) {
> writebacks.push_back(pkt);
> }
> }
>
> PacketPtr
1853,1861c1864
< // Will send up Writeback/CleanEvict snoops via isCachedAbove
< // when pushing this writeback list into the write buffer.
< if (blk->isDirty() || writebackClean) {
< // Save writeback packet for handling by caller
< writebacks.push_back(writebackBlk(blk));
< } else {
< writebacks.push_back(cleanEvictBlk(blk));
< }
< invalidateBlock(blk);
---
> evictBlock(blk, writebacks);