execute.cc (13646:626670cc6da4) execute.cc (13647:7a9b7c0373b1)
1/*
2 * Copyright (c) 2013-2014 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 234 unchanged lines hidden (view full) ---

243 {
244 TheISA::advancePC(target, inst->staticInst);
245 thread->pcState(target);
246
247 DPRINTF(Branch, "Advancing current PC from: %s to: %s\n",
248 pc_before, target);
249 }
250
1/*
2 * Copyright (c) 2013-2014 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 234 unchanged lines hidden (view full) ---

243 {
244 TheISA::advancePC(target, inst->staticInst);
245 thread->pcState(target);
246
247 DPRINTF(Branch, "Advancing current PC from: %s to: %s\n",
248 pc_before, target);
249 }
250
251 if (inst->predictedTaken && !force_branch) {
251 if (thread->status() == ThreadContext::Suspended) {
252 /* Thread got suspended */
253 DPRINTF(Branch, "Thread got suspended: branch from 0x%x to 0x%x "
254 "inst: %s\n",
255 inst->pc.instAddr(), target.instAddr(), *inst);
256
257 reason = BranchData::SuspendThread;
258 } else if (inst->predictedTaken && !force_branch) {
252 /* Predicted to branch */
253 if (!must_branch) {
254 /* No branch was taken, change stream to get us back to the
255 * intended PC value */
256 DPRINTF(Branch, "Predicted a branch from 0x%x to 0x%x but"
257 " none happened inst: %s\n",
258 inst->pc.instAddr(), inst->predictedTarget.instAddr(), *inst);
259

--- 789 unchanged lines hidden (view full) ---

1049 *(ex_info.inFlightInsts->front().inst),
1050 ex_info.lastCommitWasEndOfMacroop);
1051 }
1052
1053 while (!ex_info.inFlightInsts->empty() && /* Some more instructions to process */
1054 !branch.isStreamChange() && /* No real branch */
1055 fault == NoFault && /* No faults */
1056 completed_inst && /* Still finding instructions to execute */
259 /* Predicted to branch */
260 if (!must_branch) {
261 /* No branch was taken, change stream to get us back to the
262 * intended PC value */
263 DPRINTF(Branch, "Predicted a branch from 0x%x to 0x%x but"
264 " none happened inst: %s\n",
265 inst->pc.instAddr(), inst->predictedTarget.instAddr(), *inst);
266

--- 789 unchanged lines hidden (view full) ---

1056 *(ex_info.inFlightInsts->front().inst),
1057 ex_info.lastCommitWasEndOfMacroop);
1058 }
1059
1060 while (!ex_info.inFlightInsts->empty() && /* Some more instructions to process */
1061 !branch.isStreamChange() && /* No real branch */
1062 fault == NoFault && /* No faults */
1063 completed_inst && /* Still finding instructions to execute */
1057 num_insts_committed != commitLimit && /* Not reached commit limit */
1058 cpu.getContext(thread_id)->status() != ThreadContext::Suspended
1064 num_insts_committed != commitLimit /* Not reached commit limit */
1059 )
1060 {
1061 if (only_commit_microops) {
1062 DPRINTF(MinorInterrupt, "Committing tail of insts before"
1063 " interrupt: %s\n",
1064 *(ex_info.inFlightInsts->front().inst));
1065 }
1066

--- 808 unchanged lines hidden ---
1065 )
1066 {
1067 if (only_commit_microops) {
1068 DPRINTF(MinorInterrupt, "Committing tail of insts before"
1069 " interrupt: %s\n",
1070 *(ex_info.inFlightInsts->front().inst));
1071 }
1072

--- 808 unchanged lines hidden ---