summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Diestelhorst <stephan.diestelhorst@arm.com>2014-12-02 06:07:58 -0500
committerStephan Diestelhorst <stephan.diestelhorst@arm.com>2014-12-02 06:07:58 -0500
commit810349a8a789b0a99d6268fe725eca2e00cb9558 (patch)
tree3048a55622223762d324233da225e48746072567
parent5c84157c291dceb8040ab4dd29142a4d141fd2ed (diff)
downloadgem5-810349a8a789b0a99d6268fe725eca2e00cb9558.tar.xz
cpu: Move packet deallocation to recvTimingResp in the O3 CPU
Move the packet deallocations in the O3 CPU so that the completeDataAccess deals only with the LSQ specific parts and the generic recvTimingResp frees the packet in all other cases.
-rw-r--r--src/cpu/o3/lsq_impl.hh2
-rw-r--r--src/cpu/o3/lsq_unit_impl.hh6
2 files changed, 2 insertions, 6 deletions
diff --git a/src/cpu/o3/lsq_impl.hh b/src/cpu/o3/lsq_impl.hh
index 5d50b98ea..2c9c6eb82 100644
--- a/src/cpu/o3/lsq_impl.hh
+++ b/src/cpu/o3/lsq_impl.hh
@@ -347,6 +347,8 @@ LSQ<Impl>::recvTimingResp(PacketPtr pkt)
DPRINTF(LSQ, "Got error packet back for address: %#X\n",
pkt->getAddr());
thread[pkt->req->threadId()].completeDataAccess(pkt);
+ delete pkt->req;
+ delete pkt;
return true;
}
diff --git a/src/cpu/o3/lsq_unit_impl.hh b/src/cpu/o3/lsq_unit_impl.hh
index 887e971b4..0cc412811 100644
--- a/src/cpu/o3/lsq_unit_impl.hh
+++ b/src/cpu/o3/lsq_unit_impl.hh
@@ -105,15 +105,11 @@ LSQUnit<Impl>::completeDataAccess(PacketPtr pkt)
DPRINTF(IEW, "[sn:%lli]: Response from first half of earlier "
"blocked split load recieved. Ignoring.\n", inst->seqNum);
delete state;
- delete pkt->req;
- delete pkt;
return;
}
// If this is a split access, wait until all packets are received.
if (TheISA::HasUnalignedMemAcc && !state->complete()) {
- delete pkt->req;
- delete pkt;
return;
}
@@ -142,8 +138,6 @@ LSQUnit<Impl>::completeDataAccess(PacketPtr pkt)
cpu->ppDataAccessComplete->notify(std::make_pair(inst, pkt));
delete state;
- delete pkt->req;
- delete pkt;
}
template <class Impl>