diff options
author | Ron Dreslinski <rdreslin@umich.edu> | 2006-10-17 18:50:19 -0400 |
---|---|---|
committer | Ron Dreslinski <rdreslin@umich.edu> | 2006-10-17 18:50:19 -0400 |
commit | 9c582c7e144aef0bfc9d14bb4690d56d1688496a (patch) | |
tree | 986d9a97c38e6ac59f5965b85fe15cd800e6be9a /src/mem/cache | |
parent | 4fff6d460311d77e0056a546df41366d5a3b4604 (diff) | |
download | gem5-9c582c7e144aef0bfc9d14bb4690d56d1688496a.tar.xz |
Fixes for uni-coherence in timing mode for FS.
Still a bug in atomic uni-coherence in FS.
src/cpu/o3/fetch_impl.hh:
src/cpu/o3/lsq_impl.hh:
src/cpu/simple/atomic.cc:
src/cpu/simple/timing.cc:
Make CPU models handle coherence requests
src/mem/cache/base_cache.cc:
Properly signal coherence CSHRs
src/mem/cache/coherence/uni_coherence.cc:
Only deallocate once
--HG--
extra : convert_revision : c4533de421c371c5532ee505e3ecd451511f5c99
Diffstat (limited to 'src/mem/cache')
-rw-r--r-- | src/mem/cache/base_cache.cc | 2 | ||||
-rw-r--r-- | src/mem/cache/coherence/uni_coherence.cc | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/src/mem/cache/base_cache.cc b/src/mem/cache/base_cache.cc index 6250b72d4..ebcf83b92 100644 --- a/src/mem/cache/base_cache.cc +++ b/src/mem/cache/base_cache.cc @@ -331,7 +331,7 @@ BaseCache::CacheEvent::process() pkt = cachePort->cache->getCoherencePacket(); MSHR* cshr = (MSHR*) pkt->senderState; bool success = cachePort->sendTiming(pkt); - cachePort->cache->sendResult(pkt, cshr, success); + cachePort->cache->sendCoherenceResult(pkt, cshr, success); cachePort->waitingOnRetry = !success; if (cachePort->waitingOnRetry) DPRINTF(CachePort, "%s now waiting on a retry\n", cachePort->name()); diff --git a/src/mem/cache/coherence/uni_coherence.cc b/src/mem/cache/coherence/uni_coherence.cc index 751de4801..464266a29 100644 --- a/src/mem/cache/coherence/uni_coherence.cc +++ b/src/mem/cache/coherence/uni_coherence.cc @@ -53,11 +53,11 @@ UniCoherence::sendResult(Packet * &pkt, MSHR* cshr, bool success) if (success) { bool unblock = cshrs.isFull(); - cshrs.markInService(cshr); +// cshrs.markInService(cshr); + cshrs.deallocate(cshr); if (!cshrs.havePending()) { cache->clearSlaveRequest(Request_Coherence); } - cshrs.deallocate(cshr); if (unblock) { //since CSHRs are always used as buffers, should always get rid of one assert(!cshrs.isFull()); |