diff options
author | Steve Reinhardt <stever@gmail.com> | 2007-07-29 20:17:03 -0700 |
---|---|---|
committer | Steve Reinhardt <stever@gmail.com> | 2007-07-29 20:17:03 -0700 |
commit | 2f93db6f95b02d2bedf9571330a3185ac3fa7fa9 (patch) | |
tree | 307e0050c41df9aa9bc90c3294f7aae3c57be2e1 /src/mem/physical.cc | |
parent | 08474ccf68e14f59b4517c6024a9bc6ecbd4a1d5 (diff) | |
download | gem5-2f93db6f95b02d2bedf9571330a3185ac3fa7fa9.tar.xz |
memory system: fix functional access bug.
Make sure not to keep processing functional accesses
after they've been responded to.
Also use checkFunctional() return value instead of checking
packet command field where possible, mostly just for consistency.
--HG--
extra : convert_revision : 29fc76bc18731bd93a4ed05a281297827028ef75
Diffstat (limited to 'src/mem/physical.cc')
-rw-r--r-- | src/mem/physical.cc | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/mem/physical.cc b/src/mem/physical.cc index b96fb8a56..2f358daf2 100644 --- a/src/mem/physical.cc +++ b/src/mem/physical.cc @@ -400,12 +400,12 @@ PhysicalMemory::MemoryPort::recvAtomic(PacketPtr pkt) void PhysicalMemory::MemoryPort::recvFunctional(PacketPtr pkt) { - checkFunctional(pkt); - - // Default implementation of SimpleTimingPort::recvFunctional() - // calls recvAtomic() and throws away the latency; we can save a - // little here by just not calculating the latency. - memory->doFunctionalAccess(pkt); + if (!checkFunctional(pkt)) { + // Default implementation of SimpleTimingPort::recvFunctional() + // calls recvAtomic() and throws away the latency; we can save a + // little here by just not calculating the latency. + memory->doFunctionalAccess(pkt); + } } unsigned int |