390,393c390,391
< std::list<unsigned>::iterator threads = activeThreads->begin();
< std::list<unsigned>::iterator end = activeThreads->end();
<
< while (threads != end) {
---
> std::list<unsigned>::iterator threads = (*activeThreads).begin();
> while (threads != (*activeThreads).end()) {
395d392
<
422,423c419
< std::list<unsigned>::iterator threads = activeThreads->begin();
< std::list<unsigned>::iterator end = activeThreads->end();
---
> std::list<unsigned>::iterator threads = (*activeThreads).begin();
425c421
< while (threads != end) {
---
> while (threads != (*activeThreads).end()) {
446,447c442
< std::list<unsigned>::iterator threads = activeThreads->begin();
< std::list<unsigned>::iterator end = activeThreads->end();
---
> std::list<unsigned>::iterator threads = (*activeThreads).begin();
449c444
< while (threads != end) {
---
> while (threads != (*activeThreads).end()) {
521a517
> toIEW->commitInfo[tid].nextNPC = nextPC[tid];
571c567
< if (activeThreads->empty())
---
> if ((*activeThreads).size() <= 0)
574,575c570
< std::list<unsigned>::iterator threads = activeThreads->begin();
< std::list<unsigned>::iterator end = activeThreads->end();
---
> std::list<unsigned>::iterator threads = (*activeThreads).begin();
579c574
< while (threads != end) {
---
> while (threads != (*activeThreads).end()) {
600c595
< threads = activeThreads->begin();
---
> threads = (*activeThreads).begin();
602c597
< while (threads != end) {
---
> while (threads != (*activeThreads).end()) {
674c669,670
< } else if (cpu->check_interrupts(cpu->tcBase(0)) &&
---
> } else if (cpu->checkInterrupts &&
> cpu->check_interrupts(cpu->tcBase(0)) &&
699,700c695
< std::list<unsigned>::iterator threads = activeThreads->begin();
< std::list<unsigned>::iterator end = activeThreads->end();
---
> std::list<unsigned>::iterator threads = (*activeThreads).begin();
702c697
< while (threads != end) {
---
> while (threads != (*activeThreads).end()) {
737,738c732,734
< InstSeqNum bdelay_done_seq_num;
< bool squash_bdelay_slot;
---
> InstSeqNum bdelay_done_seq_num = squashed_inst;
> bool squash_bdelay_slot = fromIEW->squashDelaySlot[tid];
> bool branchMispredict = fromIEW->branchMispredict[tid];
740,757c736,740
< if (fromIEW->branchMispredict[tid]) {
< if (fromIEW->branchTaken[tid] &&
< fromIEW->condDelaySlotBranch[tid]) {
< DPRINTF(Commit, "[tid:%i]: Cond. delay slot branch"
< "mispredicted as taken. Squashing after previous "
< "inst, [sn:%i]\n",
< tid, squashed_inst);
< bdelay_done_seq_num = squashed_inst;
< squash_bdelay_slot = true;
< } else {
< DPRINTF(Commit, "[tid:%i]: Branch Mispredict. Squashing "
< "after delay slot [sn:%i]\n", tid, squashed_inst+1);
< bdelay_done_seq_num = squashed_inst + 1;
< squash_bdelay_slot = false;
< }
< } else {
< bdelay_done_seq_num = squashed_inst;
< squash_bdelay_slot = true;
---
> // Squashing/not squashing the branch delay slot only makes
> // sense when you're squashing from a branch, ie from a branch
> // mispredict.
> if (branchMispredict && !squash_bdelay_slot) {
> bdelay_done_seq_num++;
795a779
> toIEW->commitInfo[tid].nextNPC = fromIEW->nextNPC[tid];
821c805
< threads = activeThreads->begin();
---
> threads = (*activeThreads).begin();
823c807
< while (threads != end) {
---
> while (threads != (*activeThreads).end()) {
989a974
> #if !FULL_SYSTEM
993a979,980
> if (inst_num > 0 || iewStage->hasStoresToWB())
> #else
996a984
> #endif
1000,1002d987
< } else if (inst_num > 0 || iewStage->hasStoresToWB()) {
< DPRINTF(Commit, "Waiting to become head of commit.\n");
< return false;
1125c1110
< renameMap[tid]->setEntry(head_inst->destRegIdx(i),
---
> renameMap[tid]->setEntry(head_inst->flattenedDestRegIdx(i),
1272,1273c1257
< std::list<unsigned>::iterator threads = activeThreads->begin();
< std::list<unsigned>::iterator end = activeThreads->end();
---
> std::list<unsigned>::iterator threads = (*activeThreads).begin();
1275c1259
< while (threads != end) {
---
> while (threads != (*activeThreads).end()) {
1354,1355c1338
< assert(!activeThreads->empty());
< int tid = activeThreads->front();
---
> int tid = (*activeThreads).front();
1402,1403c1385
< std::list<unsigned>::iterator threads = activeThreads->begin();
< std::list<unsigned>::iterator end = activeThreads->end();
---
> std::list<unsigned>::iterator threads = (*activeThreads).begin();
1405c1387
< while (threads != end) {
---
> while (threads != (*activeThreads).end()) {