summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel R. Carvalho <odanrc@yahoo.com.br>2018-10-19 17:58:42 +0200
committerDaniel Carvalho <odanrc@yahoo.com.br>2018-10-22 10:19:10 +0000
commit0330c434e211c9b16402f4f0e76110a8524ca143 (patch)
tree26a4e12bd1efb88d5140a9e12314973769cba820
parent34efcae1b532df56a7ef65f0e4b76179c9bc9479 (diff)
downloadgem5-0330c434e211c9b16402f4f0e76110a8524ca143.tar.xz
mem-cache: Move evictBlock(CacheBlk*, PacketList&) to base
Move evictBlock(CacheBlk*, PacketList&) to base cache, as it is both sub-classes implementations are equal. Change-Id: I80fbd16813bfcc4938fb01ed76abe29b3f8b3018 Signed-off-by: Daniel R. Carvalho <odanrc@yahoo.com.br> Reviewed-on: https://gem5-review.googlesource.com/c/13656 Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com> Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>
-rw-r--r--src/mem/cache/base.cc9
-rw-r--r--src/mem/cache/base.hh2
-rw-r--r--src/mem/cache/cache.cc11
-rw-r--r--src/mem/cache/cache.hh2
-rw-r--r--src/mem/cache/noncoherent_cache.cc9
-rw-r--r--src/mem/cache/noncoherent_cache.hh2
6 files changed, 11 insertions, 24 deletions
diff --git a/src/mem/cache/base.cc b/src/mem/cache/base.cc
index 183d93f14..ed23ffde2 100644
--- a/src/mem/cache/base.cc
+++ b/src/mem/cache/base.cc
@@ -1310,6 +1310,15 @@ BaseCache::invalidateBlock(CacheBlk *blk)
blk->invalidate();
}
+void
+BaseCache::evictBlock(CacheBlk *blk, PacketList &writebacks)
+{
+ PacketPtr pkt = evictBlock(blk);
+ if (pkt) {
+ writebacks.push_back(pkt);
+ }
+}
+
PacketPtr
BaseCache::writebackBlk(CacheBlk *blk)
{
diff --git a/src/mem/cache/base.hh b/src/mem/cache/base.hh
index b9fd7f943..52b0fdbcd 100644
--- a/src/mem/cache/base.hh
+++ b/src/mem/cache/base.hh
@@ -705,7 +705,7 @@ class BaseCache : public MemObject
* @param blk Block to invalidate
* @param writebacks Return a list of packets with writebacks
*/
- virtual void evictBlock(CacheBlk *blk, PacketList &writebacks) = 0;
+ void evictBlock(CacheBlk *blk, PacketList &writebacks);
/**
* Invalidate a cache block.
diff --git a/src/mem/cache/cache.cc b/src/mem/cache/cache.cc
index fb0eb9d05..3bb2667af 100644
--- a/src/mem/cache/cache.cc
+++ b/src/mem/cache/cache.cc
@@ -177,7 +177,7 @@ Cache::access(PacketPtr pkt, CacheBlk *&blk, Cycles &lat,
// flush and invalidate any existing block
CacheBlk *old_blk(tags->findBlock(pkt->getAddr(), pkt->isSecure()));
if (old_blk && old_blk->isValid()) {
- evictBlock(old_blk, writebacks);
+ BaseCache::evictBlock(old_blk, writebacks);
}
blk = nullptr;
@@ -848,15 +848,6 @@ Cache::evictBlock(CacheBlk *blk)
return pkt;
}
-void
-Cache::evictBlock(CacheBlk *blk, PacketList &writebacks)
-{
- PacketPtr pkt = evictBlock(blk);
- if (pkt) {
- writebacks.push_back(pkt);
- }
-}
-
PacketPtr
Cache::cleanEvictBlk(CacheBlk *blk)
{
diff --git a/src/mem/cache/cache.hh b/src/mem/cache/cache.hh
index 588e7b94e..a7eb97d3b 100644
--- a/src/mem/cache/cache.hh
+++ b/src/mem/cache/cache.hh
@@ -141,8 +141,6 @@ class Cache : public BaseCache
M5_NODISCARD PacketPtr evictBlock(CacheBlk *blk) override;
- void evictBlock(CacheBlk *blk, PacketList &writebacks) override;
-
/**
* Create a CleanEvict request for the given block.
*
diff --git a/src/mem/cache/noncoherent_cache.cc b/src/mem/cache/noncoherent_cache.cc
index 726c32f1c..5edd435c6 100644
--- a/src/mem/cache/noncoherent_cache.cc
+++ b/src/mem/cache/noncoherent_cache.cc
@@ -357,15 +357,6 @@ NoncoherentCache::evictBlock(CacheBlk *blk)
return pkt;
}
-void
-NoncoherentCache::evictBlock(CacheBlk *blk, PacketList &writebacks)
-{
- PacketPtr pkt = evictBlock(blk);
- if (pkt) {
- writebacks.push_back(pkt);
- }
-}
-
NoncoherentCache*
NoncoherentCacheParams::create()
{
diff --git a/src/mem/cache/noncoherent_cache.hh b/src/mem/cache/noncoherent_cache.hh
index fea3cd980..824c7ccc9 100644
--- a/src/mem/cache/noncoherent_cache.hh
+++ b/src/mem/cache/noncoherent_cache.hh
@@ -125,8 +125,6 @@ class NoncoherentCache : public BaseCache
M5_NODISCARD PacketPtr evictBlock(CacheBlk *blk) override;
- void evictBlock(CacheBlk *blk, PacketList &writebacks) override;
-
public:
NoncoherentCache(const NoncoherentCacheParams *p);
};