summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Lim <ktlim@umich.edu>2007-08-21 16:16:56 -0700
committerKevin Lim <ktlim@umich.edu>2007-08-21 16:16:56 -0700
commite1054170b54c37043d768d454f7b0eafcf1c119e (patch)
tree73ec058e2ad1a9dd4ac24cce32e1ac422c5b408f
parent3555b2aecca85457d4ce5899ebafd2a7cde08e53 (diff)
downloadgem5-e1054170b54c37043d768d454f7b0eafcf1c119e.tar.xz
o3: Fix for retry ID bug.
It should be cleared prior to the call to recvRetry. Add extra DPRINTF statement for clearer debugging output. --HG-- extra : convert_revision : e2332754743f42d60e159ac89f6fb0fd8b7f57f8
-rw-r--r--src/cpu/o3/lsq_impl.hh3
-rw-r--r--src/cpu/o3/lsq_unit_impl.hh1
2 files changed, 3 insertions, 1 deletions
diff --git a/src/cpu/o3/lsq_impl.hh b/src/cpu/o3/lsq_impl.hh
index 10c0afd38..c71a0ad9d 100644
--- a/src/cpu/o3/lsq_impl.hh
+++ b/src/cpu/o3/lsq_impl.hh
@@ -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>
diff --git a/src/cpu/o3/lsq_unit_impl.hh b/src/cpu/o3/lsq_unit_impl.hh
index 8b2e82d8e..4ab149cee 100644
--- a/src/cpu/o3/lsq_unit_impl.hh
+++ b/src/cpu/o3/lsq_unit_impl.hh
@@ -928,6 +928,7 @@ void
LSQUnit<Impl>::recvRetry()
{
if (isStoreBlocked) {
+ DPRINTF(LSQUnit, "Receiving retry: store blocked\n");
assert(retryPkt != NULL);
if (dcachePort->sendTiming(retryPkt)) {