summaryrefslogtreecommitdiff
path: root/src/mem/cache/mshr.cc
diff options
context:
space:
mode:
authorCurtis Dunham <Curtis.Dunham@arm.com>2014-12-02 06:08:17 -0500
committerCurtis Dunham <Curtis.Dunham@arm.com>2014-12-02 06:08:17 -0500
commit7ca27dd3ccc2bcd3b77480179030d07f50c3d2d9 (patch)
treed663a1fc2e9797d90672656a9fd110df6d777ba6 /src/mem/cache/mshr.cc
parentdf37cad0fdf262ffbfd1b680e7fb8ef7689885ad (diff)
downloadgem5-7ca27dd3ccc2bcd3b77480179030d07f50c3d2d9.tar.xz
mem: Remove WriteInvalidate support
Prepare for a different implementation following in the next patch
Diffstat (limited to 'src/mem/cache/mshr.cc')
-rw-r--r--src/mem/cache/mshr.cc25
1 files changed, 5 insertions, 20 deletions
diff --git a/src/mem/cache/mshr.cc b/src/mem/cache/mshr.cc
index e4b62e230..793db02c2 100644
--- a/src/mem/cache/mshr.cc
+++ b/src/mem/cache/mshr.cc
@@ -62,9 +62,9 @@
using namespace std;
MSHR::MSHR() : readyTime(0), _isUncacheable(false), downstreamPending(false),
- pendingDirty(false), pendingClean(false),
+ pendingDirty(false),
postInvalidate(false), postDowngrade(false),
- _isObsolete(false), queue(NULL), order(0), addr(0),
+ queue(NULL), order(0), addr(0),
size(0), isSecure(false), inService(false),
isForward(false), threadNum(InvalidThreadID), data(NULL)
{
@@ -214,9 +214,7 @@ MSHR::allocate(Addr _addr, int _size, PacketPtr target, Tick whenReady,
isForward = false;
_isUncacheable = target->req->isUncacheable();
inService = false;
- pendingClean = (target->cmd == MemCmd::WriteInvalidateReq);
downstreamPending = false;
- _isObsolete = false;
threadNum = 0;
assert(targets.isReset());
// Don't know of a case where we would allocate a new MSHR for a
@@ -253,9 +251,8 @@ MSHR::markInService(PacketPtr pkt)
assert(pkt != NULL);
inService = true;
- pendingDirty = ((targets.needsExclusive &&
- (pkt->cmd != MemCmd::WriteInvalidateReq)) ||
- (!pkt->sharedAsserted() && pkt->memInhibitAsserted()));
+ pendingDirty = targets.needsExclusive ||
+ (!pkt->sharedAsserted() && pkt->memInhibitAsserted());
postInvalidate = postDowngrade = false;
if (!downstreamPending) {
@@ -374,12 +371,7 @@ MSHR::handleSnoop(PacketPtr pkt, Counter _order)
targets.add(cp_pkt, curTick(), _order, Target::FromSnoop,
downstreamPending && targets.needsExclusive);
- // WriteInvalidates must writeback and should not be inhibited on
- // account of its snoops discovering MSHRs wanting exclusive access
- // to what it wrote. We don't want to push this check higher,
- // however, because we want to be sure to add an invalidating
- // Target::FromSnoop, above.
- if (isPendingDirty() && (pkt->cmd != MemCmd::WriteInvalidateReq)) {
+ if (isPendingDirty()) {
pkt->assertMemInhibit();
pkt->setSupplyExclusive();
}
@@ -387,13 +379,6 @@ MSHR::handleSnoop(PacketPtr pkt, Counter _order)
if (pkt->needsExclusive()) {
// This transaction will take away our pending copy
postInvalidate = true;
-
- // Do not defer (i.e. return true) the snoop if the block is
- // going to be clean once the MSHR completes, as the data is
- // ready now.
- if (isPendingClean()) {
- return false;
- }
}
}