summaryrefslogtreecommitdiff
path: root/src/cpu/minor/lsq.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/minor/lsq.cc')
-rw-r--r--src/cpu/minor/lsq.cc18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/cpu/minor/lsq.cc b/src/cpu/minor/lsq.cc
index 75dbb804a..501620746 100644
--- a/src/cpu/minor/lsq.cc
+++ b/src/cpu/minor/lsq.cc
@@ -730,6 +730,15 @@ LSQ::StoreBuffer::forwardStoreData(LSQRequestPtr load,
}
void
+LSQ::StoreBuffer::countIssuedStore(LSQRequestPtr request)
+{
+ /* Barriers are accounted for as they are cleared from
+ * the queue, not after their transfers are complete */
+ if (!request->isBarrier())
+ numUnissuedAccesses--;
+}
+
+void
LSQ::StoreBuffer::step()
{
DPRINTF(MinorMem, "StoreBuffer step numUnissuedAccesses: %d\n",
@@ -785,10 +794,7 @@ LSQ::StoreBuffer::step()
" system\n", *(request->inst));
if (lsq.tryToSend(request)) {
- /* Barrier are accounted for as they are cleared from
- * the queue, not after their transfers are complete */
- if (!request->isBarrier())
- numUnissuedAccesses--;
+ countIssuedStore(request);
issue_count++;
} else {
/* Don't step on to the next store buffer entry if this
@@ -1198,7 +1204,7 @@ LSQ::recvTimingResp(PacketPtr response)
/* Response to a request from the store buffer */
request->retireResponse(response);
- /* Remove completed requests unless they are barrier (which will
+ /* Remove completed requests unless they are barriers (which will
* need to be removed in order */
if (request->isComplete()) {
if (!request->isBarrier()) {
@@ -1265,7 +1271,7 @@ LSQ::recvRetry()
break;
case LSQRequest::StoreBufferIssuing:
/* In the store buffer */
- storeBuffer.numUnissuedAccesses--;
+ storeBuffer.countIssuedStore(retryRequest);
break;
default:
assert(false);