execute.cc (13954:2f400a5f2627) execute.cc (13964:e4dbd156a640)
1/*
2 * Copyright (c) 2013-2014,2018 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,2018 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 (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) {
251 if (inst->predictedTaken && !force_branch) {
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

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

1063 *(ex_info.inFlightInsts->front().inst),
1064 ex_info.lastCommitWasEndOfMacroop);
1065 }
1066
1067 while (!ex_info.inFlightInsts->empty() && /* Some more instructions to process */
1068 !branch.isStreamChange() && /* No real branch */
1069 fault == NoFault && /* No faults */
1070 completed_inst && /* Still finding instructions to execute */
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

--- 796 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 */
1071 num_insts_committed != commitLimit /* Not reached commit limit */
1064 num_insts_committed != commitLimit && /* Not reached commit limit */
1065 cpu.getContext(thread_id)->status() != ThreadContext::Suspended
1072 )
1073 {
1074 if (only_commit_microops) {
1075 DPRINTF(MinorInterrupt, "Committing tail of insts before"
1076 " interrupt: %s\n",
1077 *(ex_info.inFlightInsts->front().inst));
1078 }
1079

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

--- 808 unchanged lines hidden ---