diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2006-11-08 16:18:10 -0500 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2006-11-08 16:18:10 -0500 |
commit | f720029e97358b2f69ea0ecaace89d5c2ccc6bfe (patch) | |
tree | 49f739cbc78b842fc303c1a1296d293ca03ec961 /src/mem/cache/base_cache.cc | |
parent | 5b90922ad59189f5967dc97a00bbfead062f4ba3 (diff) | |
parent | 74745cfeac4f4de4613d8faed77aa7e3c06cbca4 (diff) | |
download | gem5-f720029e97358b2f69ea0ecaace89d5c2ccc6bfe.tar.xz |
Merge zizzer.eecs.umich.edu:/bk/newmem/
into zeep.eecs.umich.edu:/home/gblack/m5/newmemmemops
--HG--
extra : convert_revision : dc165840841bdd88e40111b98d1be493441703f0
Diffstat (limited to 'src/mem/cache/base_cache.cc')
-rw-r--r-- | src/mem/cache/base_cache.cc | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/mem/cache/base_cache.cc b/src/mem/cache/base_cache.cc index 1c519fb86..c26d7782b 100644 --- a/src/mem/cache/base_cache.cc +++ b/src/mem/cache/base_cache.cc @@ -140,6 +140,9 @@ BaseCache::CachePort::recvRetry() } waitingOnRetry = false; } + // Check if we're done draining once this list is empty + if (drainList.empty()) + cache->checkDrain(); } else if (!isCpuSide) { @@ -338,6 +341,10 @@ BaseCache::CacheEvent::process() cachePort->drainList.push_back(pkt); cachePort->waitingOnRetry = true; } + + // Check if we're done draining once this list is empty + if (cachePort->drainList.empty()) + cachePort->cache->checkDrain(); } const char * @@ -599,3 +606,18 @@ BaseCache::regStats() ; } + +unsigned int +BaseCache::drain(Event *de) +{ + // Set status + if (!canDrain()) { + drainEvent = de; + + changeState(SimObject::Draining); + return 1; + } + + changeState(SimObject::Drained); + return 0; +} |