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