summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mem/cache/base_cache.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/mem/cache/base_cache.cc b/src/mem/cache/base_cache.cc
index fd97ea3aa..4b62073d8 100644
--- a/src/mem/cache/base_cache.cc
+++ b/src/mem/cache/base_cache.cc
@@ -211,7 +211,11 @@ BaseCache::CacheEvent::process()
//Know the packet to send
pkt->result = Packet::Success;
pkt->makeTimingResponse();
- if (!cachePort->sendTiming(pkt)) {
+ if (!drainList.empty()) {
+ //Already blocked waiting for bus, just append
+ cachePort->drainList.push_back(pkt);
+ }
+ else if (!cachePort->sendTiming(pkt)) {
//It failed, save it to list of drain events
cachePort->drainList.push_back(pkt);
}