summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGiacomo Travaglini <giacomo.travaglini@arm.com>2019-03-01 13:56:15 +0000
committerGiacomo Travaglini <giacomo.travaglini@arm.com>2019-05-14 08:44:37 +0000
commit9852c5d96b281336b9392ae3ea7fb66d6e792b19 (patch)
treed74ad6e58c6b2f976df1af01c0906a8b711f29d4 /src
parentc1bd27907d9404ba0803495d8eb5c9ad8513f09f (diff)
downloadgem5-9852c5d96b281336b9392ae3ea7fb66d6e792b19.tar.xz
Revert "cpu: fix branching when thread is suspended in MinorCPU"
This reverts commit e437086341712f1435db655b3527ea29b3311f4e. The commit was part of a patchset which broke MinorCPU regressions (switcheroo) Change-Id: Ib8482034c2402008ccfa552325a8eb31e731b619 Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18602 Maintainer: Jason Lowe-Power <jason@lowepower.com> Tested-by: kokoro <noreply+kokoro@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/cpu/minor/execute.cc12
1 files changed, 3 insertions, 9 deletions
diff --git a/src/cpu/minor/execute.cc b/src/cpu/minor/execute.cc
index 527eb2bc0..6d751bade 100644
--- a/src/cpu/minor/execute.cc
+++ b/src/cpu/minor/execute.cc
@@ -248,14 +248,7 @@ Execute::tryToBranch(MinorDynInstPtr inst, Fault fault, BranchData &branch)
pc_before, target);
}
- if (thread->status() == ThreadContext::Suspended) {
- /* Thread got suspended */
- DPRINTF(Branch, "Thread got suspended: branch from 0x%x to 0x%x "
- "inst: %s\n",
- inst->pc.instAddr(), target.instAddr(), *inst);
-
- reason = BranchData::SuspendThread;
- } else if (inst->predictedTaken && !force_branch) {
+ if (inst->predictedTaken && !force_branch) {
/* Predicted to branch */
if (!must_branch) {
/* No branch was taken, change stream to get us back to the
@@ -1068,7 +1061,8 @@ Execute::commit(ThreadID thread_id, bool only_commit_microops, bool discard,
!branch.isStreamChange() && /* No real branch */
fault == NoFault && /* No faults */
completed_inst && /* Still finding instructions to execute */
- num_insts_committed != commitLimit /* Not reached commit limit */
+ num_insts_committed != commitLimit && /* Not reached commit limit */
+ cpu.getContext(thread_id)->status() != ThreadContext::Suspended
)
{
if (only_commit_microops) {