o3: Fix for retry ID bug.
authorKevin Lim <ktlim@umich.edu>
Tue, 21 Aug 2007 23:16:56 +0000 (16:16 -0700)
committerKevin Lim <ktlim@umich.edu>
Tue, 21 Aug 2007 23:16:56 +0000 (16:16 -0700)
It should be cleared prior to the call to recvRetry.
Add extra DPRINTF statement for clearer debugging output.

--HG--
extra : convert_revision : e2332754743f42d60e159ac89f6fb0fd8b7f57f8

src/cpu/o3/lsq_impl.hh
src/cpu/o3/lsq_unit_impl.hh

index 10c0afd381f89dc0cb4c0c99b3a20c6988a1563d..c71a0ad9d2bf87175b17e8f806a3c67111b01ff2 100644 (file)
@@ -101,10 +101,11 @@ LSQ<Impl>::DcachePort::recvRetry()
         //Squashed, so drop it
         return;
     }
-    lsq->thread[lsq->retryTid].recvRetry();
+    int curr_retry_tid = lsq->retryTid;
     // Speculatively clear the retry Tid.  This will get set again if
     // the LSQUnit was unable to complete its access.
     lsq->retryTid = -1;
+    lsq->thread[curr_retry_tid].recvRetry();
 }
 
 template <class Impl>
index 8b2e82d8ea09b50ff612755d0746c840d55e2cf0..4ab149cee68d778cdd1197241f0132af53cf65d5 100644 (file)
@@ -928,6 +928,7 @@ void
 LSQUnit<Impl>::recvRetry()
 {
     if (isStoreBlocked) {
+        DPRINTF(LSQUnit, "Receiving retry: store blocked\n");
         assert(retryPkt != NULL);
 
         if (dcachePort->sendTiming(retryPkt)) {