summaryrefslogtreecommitdiff
path: root/src/mem
diff options
context:
space:
mode:
Diffstat (limited to 'src/mem')
-rw-r--r--src/mem/cache/mshr.cc11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/mem/cache/mshr.cc b/src/mem/cache/mshr.cc
index 1b21546aa..00dbe900b 100644
--- a/src/mem/cache/mshr.cc
+++ b/src/mem/cache/mshr.cc
@@ -465,6 +465,10 @@ MSHR::handleSnoop(PacketPtr pkt, Counter _order)
return true;
}
+ // Start by determining if we will eventually respond or not,
+ // matching the conditions checked in Cache::handleSnoop
+ const bool will_respond = isPendingModified() && pkt->needsResponse() &&
+ !pkt->isClean();
if (isPendingModified() || pkt->isInvalidate()) {
// We need to save and replay the packet in two cases:
// 1. We're awaiting a writable copy (Modified or Exclusive),
@@ -474,11 +478,6 @@ MSHR::handleSnoop(PacketPtr pkt, Counter _order)
// to forward the snoop up the hierarchy after the current
// transaction completes.
- // Start by determining if we will eventually respond or not,
- // matching the conditions checked in Cache::handleSnoop
- bool will_respond = isPendingModified() && pkt->needsResponse() &&
- !pkt->isClean();
-
// The packet we are snooping may be deleted by the time we
// actually process the target, and we consequently need to
// save a copy here. Clear flags and also allocate new data as
@@ -535,7 +534,7 @@ MSHR::handleSnoop(PacketPtr pkt, Counter _order)
pkt->setHasSharers();
}
- return true;
+ return will_respond;
}
MSHR::TargetList