From da950caed24f7674be4aa999c2f17c520165fd84 Mon Sep 17 00:00:00 2001 From: Andreas Hansson Date: Tue, 19 Feb 2013 12:57:47 -0500 Subject: mem: Fix sender state bug and delay popping This patch fixes a newly introduced bug where the sender state was popped before checking that it should be. Amazingly all regressions pass, but Linux fails to boot on the detailed CPU with caches enabled. --- src/mem/cache/cache_impl.hh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mem/cache/cache_impl.hh b/src/mem/cache/cache_impl.hh index 8f7938b93..2be41642d 100644 --- a/src/mem/cache/cache_impl.hh +++ b/src/mem/cache/cache_impl.hh @@ -366,7 +366,7 @@ Cache::recvTimingSnoopResp(PacketPtr pkt) // must be cache-to-cache response from upper to lower level ForwardResponseRecord *rec = - dynamic_cast(pkt->popSenderState()); + dynamic_cast(pkt->senderState); assert(!system->bypassCaches()); if (rec == NULL) { @@ -379,6 +379,7 @@ Cache::recvTimingSnoopResp(PacketPtr pkt) return; } + pkt->popSenderState(); pkt->setDest(rec->prevSrc); delete rec; // @todo someone should pay for this -- cgit v1.2.3