Move code before a early return to make sure it is executed on all paths
authorRon Dreslinski <rdreslin@umich.edu>
Sun, 12 Nov 2006 11:44:05 +0000 (06:44 -0500)
committerRon Dreslinski <rdreslin@umich.edu>
Sun, 12 Nov 2006 11:44:05 +0000 (06:44 -0500)
--HG--
extra : convert_revision : cfdd5b6911422fbb733677c43d027aa4407fbc85

src/mem/cache/cache_impl.hh

index 51aa4f8e7965f33ab41784e9e801acc1ef8c8902..8acc67b69d81f9e02585cf2ab8c557d61bee0a6c 100644 (file)
@@ -476,6 +476,13 @@ Cache<TagStore,Buffering,Coherence>::snoop(PacketPtr &pkt)
     }
     CacheBlk::State new_state;
     bool satisfy = coherence->handleBusRequest(pkt,blk,mshr, new_state);
+
+    if (blk && mshr && !mshr->inService && new_state == 0) {
+            //There was a outstanding write to a shared block, not need ReadEx
+            //not update, so change No Allocate param in MSHR
+            mshr->pkt->flags &= ~NO_ALLOCATE;
+    }
+
     if (satisfy) {
         DPRINTF(Cache, "Cache snooped a %s request for addr %x and "
                 "now supplying data, new state is %i\n",
@@ -485,15 +492,10 @@ Cache<TagStore,Buffering,Coherence>::snoop(PacketPtr &pkt)
         respondToSnoop(pkt, curTick + hitLatency);
         return;
     }
-    if (blk) {
+    if (blk)
         DPRINTF(Cache, "Cache snooped a %s request for addr %x, "
                 "new state is %i\n", pkt->cmdString(), blk_addr, new_state);
-        if (mshr && !mshr->inService && new_state == 0) {
-            //There was a outstanding write to a shared block, not need ReadEx
-            //not update, so change No Allocate param in MSHR
-            mshr->pkt->flags &= ~NO_ALLOCATE;
-        }
-    }
+
     tags->handleSnoop(blk, new_state);
 }