From 264e8178ff8e97df4fde62359a01898a8af7ae26 Mon Sep 17 00:00:00 2001 From: Korey Sewell Date: Sun, 19 Jun 2011 21:43:36 -0400 Subject: imported patch squash_from_next_stage --- src/cpu/inorder/cpu.cc | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) (limited to 'src/cpu/inorder/cpu.cc') diff --git a/src/cpu/inorder/cpu.cc b/src/cpu/inorder/cpu.cc index dbee7f46c..03c44ea86 100644 --- a/src/cpu/inorder/cpu.cc +++ b/src/cpu/inorder/cpu.cc @@ -1130,6 +1130,7 @@ InOrderCPU::getPipeStage(int stage_num) return pipelineStage[stage_num]; } + RegIndex InOrderCPU::flattenRegIdx(RegIndex reg_idx, RegType ®_type, ThreadID tid) { @@ -1455,29 +1456,31 @@ InOrderCPU::removeInstsUntil(const InstSeqNum &seq_num, ThreadID tid) inline void -InOrderCPU::squashInstIt(const ListIt &instIt, ThreadID tid) +InOrderCPU::squashInstIt(const ListIt inst_it, ThreadID tid) { - if ((*instIt)->threadNumber == tid) { + DynInstPtr inst = (*inst_it); + if (inst->threadNumber == tid) { DPRINTF(InOrderCPU, "Squashing instruction, " "[tid:%i] [sn:%lli] PC %s\n", - (*instIt)->threadNumber, - (*instIt)->seqNum, - (*instIt)->pcState()); + inst->threadNumber, + inst->seqNum, + inst->pcState()); - (*instIt)->setSquashed(); + inst->setSquashed(); + archRegDepMap[tid].remove(inst); - if (!(*instIt)->isRemoveList()) { + if (!inst->isRemoveList()) { DPRINTF(InOrderCPU, "Pushing instruction [tid:%i] PC %s " "[sn:%lli] to remove list\n", - (*instIt)->threadNumber, (*instIt)->pcState(), - (*instIt)->seqNum); - (*instIt)->setRemoveList(); - removeList.push(instIt); + inst->threadNumber, inst->pcState(), + inst->seqNum); + inst->setRemoveList(); + removeList.push(inst_it); } else { DPRINTF(InOrderCPU, "Ignoring instruction removal for [tid:%i]" " PC %s [sn:%lli], already on remove list\n", - (*instIt)->threadNumber, (*instIt)->pcState(), - (*instIt)->seqNum); + inst->threadNumber, inst->pcState(), + inst->seqNum); } } @@ -1499,7 +1502,7 @@ InOrderCPU::cleanUpRemovedInsts() ThreadID tid = inst->threadNumber; // Remove From Register Dependency Map, If Necessary - archRegDepMap[tid].remove(inst); + // archRegDepMap[tid].remove(inst); // Clear if Non-Speculative if (inst->staticInst && -- cgit v1.2.3