summaryrefslogtreecommitdiff
path: root/src/mem/cache/miss/mshr.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/mem/cache/miss/mshr.cc')
-rw-r--r--src/mem/cache/miss/mshr.cc10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/mem/cache/miss/mshr.cc b/src/mem/cache/miss/mshr.cc
index 8fa11ab2e..fc8d2175e 100644
--- a/src/mem/cache/miss/mshr.cc
+++ b/src/mem/cache/miss/mshr.cc
@@ -132,13 +132,15 @@ MSHR::allocateSnoopTarget(PacketPtr target, Tick when, Counter _order)
// We're awaiting an exclusive copy, so ownership is pending.
// It's up to us to respond once the data arrives.
target->assertMemInhibit();
- } else if (target->needsExclusive()) {
+ }
+
+ if (target->needsExclusive()) {
// This transaction will take away our pending copy
pendingInvalidate = true;
} else {
- // If we're not going to supply data or perform an
- // invalidation, we don't need to save this.
- return;
+ // We'll keep our pending copy, but we can't let the other guy
+ // think he's getting it exclusive
+ target->assertShared();
}
targets.push_back(Target(target, when, _order, false));