summaryrefslogtreecommitdiff
path: root/src/cpu/o3/decode_impl.hh
diff options
context:
space:
mode:
authorRekai Gonzalez-Alberquilla <rekai.gonzalezalberquilla@arm.com>2016-09-22 10:49:10 +0100
committerRekai Gonzalez-Alberquilla <rekai.gonzalezalberquilla@arm.com>2016-09-22 10:49:10 +0100
commitad296b068cf4a0b043988be518994ac6bd7582f0 (patch)
tree584633dffa6806a93d2c2c1a94b90096e3c50d2e /src/cpu/o3/decode_impl.hh
parentd0ffd2f9b88d6abb29ed861deec12b40bdb7419f (diff)
downloadgem5-ad296b068cf4a0b043988be518994ac6bd7582f0.tar.xz
cpu: Fix the O3 CPU Drain
The drain did not wait until stages were ready again. Therefore, as a result of messages in the TimeBuffer being drain, the state after the drain was not consistent and asserts fired in some places when the draining happened after a stage got blocked, but before the notification arrived to the previous stages. Change-Id: Ib50b3b40b7f745b62c1eba2931dec76860824c71 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Diffstat (limited to 'src/cpu/o3/decode_impl.hh')
-rw-r--r--src/cpu/o3/decode_impl.hh3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/cpu/o3/decode_impl.hh b/src/cpu/o3/decode_impl.hh
index 4ff82da8e..ca56ac1e4 100644
--- a/src/cpu/o3/decode_impl.hh
+++ b/src/cpu/o3/decode_impl.hh
@@ -209,7 +209,8 @@ bool
DefaultDecode<Impl>::isDrained() const
{
for (ThreadID tid = 0; tid < numThreads; ++tid) {
- if (!insts[tid].empty() || !skidBuffer[tid].empty())
+ if (!insts[tid].empty() || !skidBuffer[tid].empty() ||
+ (decodeStatus[tid] != Running && decodeStatus[tid] != Idle))
return false;
}
return true;