summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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)) {