summaryrefslogtreecommitdiff
path: root/src/mem/cache/miss/mshr.cc
diff options
context:
space:
mode:
authorSteve Reinhardt <stever@eecs.umich.edu>2007-06-25 22:23:29 -0700
committerSteve Reinhardt <stever@eecs.umich.edu>2007-06-25 22:23:29 -0700
commitf697e959a17646500bca7c12e6bb7b30e047f1bb (patch)
tree0bb3d25129ea15ef34779be866907574b88ace2a /src/mem/cache/miss/mshr.cc
parent529f12a531c331e4bdcf595a3aaf65ee5ef6b72d (diff)
downloadgem5-f697e959a17646500bca7c12e6bb7b30e047f1bb.tar.xz
Couple minor bug fixes...
src/mem/cache/cache_impl.hh: Handle grants with no packet. src/mem/cache/miss/mshr.cc: Fix MSHR snoop hit handling. --HG-- extra : convert_revision : f365283afddaa07cb9e050b2981ad6a898c14451
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));