summaryrefslogtreecommitdiff
path: root/src/mem/cache
diff options
context:
space:
mode:
authorRon Dreslinski <rdreslin@umich.edu>2006-10-07 12:20:29 -0400
committerRon Dreslinski <rdreslin@umich.edu>2006-10-07 12:20:29 -0400
commitfdaed2c7aeb0f2a34c6ef60cc7de7db8d8db62b3 (patch)
treec0e1f10a67c548e199aba82bf54bbace4c6dc38b /src/mem/cache
parentdf3014a7262c6f1311217eeeff31017f5d46f216 (diff)
downloadgem5-fdaed2c7aeb0f2a34c6ef60cc7de7db8d8db62b3.tar.xz
No need to keep trying to request the data bus if we are already waiting.
--HG-- extra : convert_revision : dbaad52ed8d0841dc9224661e3df0d8ef4989aa3
Diffstat (limited to 'src/mem/cache')
-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);
}