summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAli Saidi <Ali.Saidi@ARM.com>2012-06-29 11:18:29 -0400
committerAli Saidi <Ali.Saidi@ARM.com>2012-06-29 11:18:29 -0400
commit8d1e56bdcd673fd3b1ddfd9ac82f7c1ded3110c4 (patch)
treee9f28aeb56273a2b4b909395f2a4e00bfefaaab3
parent7e3496c78c0a4f2e639d1361cf1c73ef4af0c10f (diff)
downloadgem5-8d1e56bdcd673fd3b1ddfd9ac82f7c1ded3110c4.tar.xz
Cache: Only invalidate a line in the cache when an uncacheable write is seen.
-rw-r--r--src/mem/cache/cache_impl.hh4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/mem/cache/cache_impl.hh b/src/mem/cache/cache_impl.hh
index fec0a6222..2329b2ea6 100644
--- a/src/mem/cache/cache_impl.hh
+++ b/src/mem/cache/cache_impl.hh
@@ -275,7 +275,7 @@ Cache<TagStore>::access(PacketPtr pkt, BlkType *&blk,
if (pkt->req->isUncacheable()) {
if (pkt->req->isClearLL()) {
tags->clearLocks();
- } else {
+ } else if (pkt->isWrite()) {
blk = tags->findBlock(pkt->getAddr());
if (blk != NULL) {
tags->invalidateBlk(blk);
@@ -439,7 +439,7 @@ Cache<TagStore>::timingAccess(PacketPtr pkt)
if (pkt->req->isUncacheable()) {
if (pkt->req->isClearLL()) {
tags->clearLocks();
- } else {
+ } else if (pkt->isWrite()) {
BlkType *blk = tags->findBlock(pkt->getAddr());
if (blk != NULL) {
tags->invalidateBlk(blk);