diff options
author | Giacomo Travaglini <giacomo.travaglini@arm.com> | 2019-03-01 13:56:15 +0000 |
---|---|---|
committer | Giacomo Travaglini <giacomo.travaglini@arm.com> | 2019-05-14 08:44:37 +0000 |
commit | 9852c5d96b281336b9392ae3ea7fb66d6e792b19 (patch) | |
tree | d74ad6e58c6b2f976df1af01c0906a8b711f29d4 /src/cpu | |
parent | c1bd27907d9404ba0803495d8eb5c9ad8513f09f (diff) | |
download | gem5-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/cpu')
-rw-r--r-- | src/cpu/minor/execute.cc | 12 |
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) { |