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 --- |