From b6f32253dd504de7873e0087d2d15ba0f227a5b5 Mon Sep 17 00:00:00 2001 From: Ali Saidi Date: Wed, 12 Nov 2014 09:05:22 -0500 Subject: [PATCH] arm: Fix timing wakeup with LLSC --- src/cpu/simple/timing.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/cpu/simple/timing.cc b/src/cpu/simple/timing.cc index 5bfc9799d..2d0ab330e 100644 --- a/src/cpu/simple/timing.cc +++ b/src/cpu/simple/timing.cc @@ -243,6 +243,12 @@ bool TimingSimpleCPU::handleReadPacket(PacketPtr pkt) { RequestPtr req = pkt->req; + + // We're about the issues a locked load, so tell the monitor + // to start caring about this address + if (pkt->isRead() && pkt->req->isLLSC()) { + TheISA::handleLockedRead(thread, pkt->req); + } if (req->isMmappedIpr()) { Cycles delay = TheISA::handleIprRead(thread->getTC(), pkt); new IprEvent(pkt, this, clockEdge(delay)); @@ -792,12 +798,6 @@ TimingSimpleCPU::completeDataAccess(PacketPtr pkt) traceData = NULL; } - // the locked flag may be cleared on the response packet, so check - // pkt->req and not pkt to see if it was a load-locked - if (pkt->isRead() && pkt->req->isLLSC()) { - TheISA::handleLockedRead(thread, pkt->req); - } - delete pkt->req; delete pkt; -- 2.30.2