Small bug fixes for timing LL/SC. Better now but

not necessarily 100% there yet.

src/mem/cache/cache_impl.hh:
    Generate response packet on failed store conditional.
src/mem/packet.hh:
    Clear packet flags when reinitializing.
    (SATISFIED in particular is one we don't want to leave set.)

--HG--
extra : convert_revision : 29207c8a09afcbce43f41c480ad0c1b21d47454f
This commit is contained in:
Steve Reinhardt 2006-10-21 23:35:00 -07:00
parent 0159529343
commit 5e2263fc52
2 changed files with 7 additions and 1 deletions

View file

@ -232,7 +232,12 @@ Cache<TagStore,Buffering,Coherence>::access(PacketPtr &pkt)
}
}
if (!(pkt->flags & SATISFIED)) {
if (pkt->flags & SATISFIED) {
// happens when a store conditional fails because it missed
// the cache completely
if (pkt->needsResponse())
respond(pkt, curTick+lat);
} else {
missQueue->handleMiss(pkt, size, curTick + hitLatency);
}

View file

@ -310,6 +310,7 @@ class Packet
* multiple transactions. */
void reinitFromRequest() {
assert(req->validPaddr);
flags = 0;
addr = req->paddr;
size = req->size;
time = req->time;