diff options
author | Andreas Hansson <andreas.hansson@arm.com> | 2013-06-27 05:49:49 -0400 |
---|---|---|
committer | Andreas Hansson <andreas.hansson@arm.com> | 2013-06-27 05:49:49 -0400 |
commit | 10650fc5257c2351e95292747ad6099cea9dfb1f (patch) | |
tree | 58f9ab1301cfb8b75ae4f7865fa30c7f6f607422 /src/cpu/o3/fu_pool.cc | |
parent | 368f50a0a1caaddf84ef35a5597f5eee75495cbb (diff) | |
download | gem5-10650fc5257c2351e95292747ad6099cea9dfb1f.tar.xz |
cpu: Consider instructions waiting for FU completion in draining
This patch changes the IEW drain check to include the FU pool as there
can be instructions that are "stored" in FU completion events and thus
not covered by the existing checks. With this patch, we simply include
a check to see if all the FUs are considered non-busy in the next
tick.
Without this patch, the pc-switcheroo-full regression fails after
minor changes to the cache timing (aligning to clock edge).
Diffstat (limited to 'src/cpu/o3/fu_pool.cc')
-rw-r--r-- | src/cpu/o3/fu_pool.cc | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/cpu/o3/fu_pool.cc b/src/cpu/o3/fu_pool.cc index 78af428db..3edc2c35b 100644 --- a/src/cpu/o3/fu_pool.cc +++ b/src/cpu/o3/fu_pool.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012 ARM Limited + * Copyright (c) 2012-2013 ARM Limited * All rights reserved * * The license below extends only to copyright in the software and shall @@ -255,12 +255,14 @@ FUPool::dump() } } -void -FUPool::drainSanityCheck() const +bool +FUPool::isDrained() const { - assert(unitsToBeFreed.empty()); + bool is_drained = true; for (int i = 0; i < numFU; i++) - assert(!unitBusy[i]); + is_drained = is_drained && !unitBusy[i]; + + return is_drained; } // |