34,35d33
< #include "arch/isa_traits.hh"
< #include "arch/regfile.hh"
46,47d43
< resumeSerialize(false),
< resumeUnblocking(false),
339c335,337
< renameStatus[tid] == Unblocking) {
---
> renameStatus[tid] == Unblocking ||
> renameStatus[tid] == SerializeStall) {
>
342d339
< resumeSerialize = false;
344,354d340
< } else if (renameStatus[tid] == SerializeStall) {
< if (serializeInst[tid]->seqNum <= squash_seq_num) {
< DPRINTF(Rename, "Rename will resume serializing after squash\n");
< resumeSerialize = true;
< assert(serializeInst[tid]);
< } else {
< resumeSerialize = false;
< toDecode->renameUnblock[tid] = 1;
<
< serializeInst[tid] = NULL;
< }
409,411d394
< resumeUnblocking = (skidBuffer[tid].size() != 0);
< DPRINTF(Rename, "Resume unblocking set to %s\n",
< resumeUnblocking ? "true" : "false");
432c415,416
< std::list<unsigned>::iterator threads = (*activeThreads).begin();
---
> std::list<unsigned>::iterator threads = activeThreads->begin();
> std::list<unsigned>::iterator end = activeThreads->end();
435c419
< while (threads != (*activeThreads).end()) {
---
> while (threads != end) {
454c438
< threads = (*activeThreads).begin();
---
> threads = activeThreads->begin();
456c440
< while (threads != (*activeThreads).end()) {
---
> while (threads != end) {
495,508d478
< // If we are currently in SerializeStall and resumeSerialize
< // was set, then that means that we are resuming serializing
< // this cycle. Tell the previous stages to block.
< if (resumeSerialize) {
< resumeSerialize = false;
< block(tid);
< toDecode->renameUnblock[tid] = false;
< }
< } else if (renameStatus[tid] == Unblocking) {
< if (resumeUnblocking) {
< block(tid);
< resumeUnblocking = false;
< toDecode->renameUnblock[tid] = false;
< }
774,782d743
< {
< typename InstQueue::iterator it;
< warn("Skidbuffer contents:\n");
< for(it = skidBuffer[tid].begin(); it != skidBuffer[tid].end(); it++)
< {
< warn("[tid:%u]: %s [sn:%i].\n", tid,
< (*it)->staticInst->disassemble(inst->readPC()),
< (*it)->seqNum);
< }
784d744
< }
808c768,769
< std::list<unsigned>::iterator threads = (*activeThreads).begin();
---
> std::list<unsigned>::iterator threads = activeThreads->begin();
> std::list<unsigned>::iterator end = activeThreads->end();
810,811c771,774
< while (threads != (*activeThreads).end()) {
< if (!skidBuffer[*threads++].empty())
---
> while (threads != end) {
> unsigned tid = *threads++;
>
> if (!skidBuffer[tid].empty())
824c787,788
< std::list<unsigned>::iterator threads = (*activeThreads).begin();
---
> std::list<unsigned>::iterator threads = activeThreads->begin();
> std::list<unsigned>::iterator end = activeThreads->end();
826,828c790
< threads = (*activeThreads).begin();
<
< while (threads != (*activeThreads).end()) {
---
> while (threads != end) {
871,874c833
< // If resumeUnblocking is set, we unblocked during the squash,
< // but now we're have unblocking status. We need to tell earlier
< // stages to block.
< if (resumeUnblocking || renameStatus[tid] != Unblocking) {
---
> if (renameStatus[tid] != Unblocking) {
1007,1012d965
< RegIndex flat_src_reg = src_reg;
< if (src_reg < TheISA::FP_Base_DepTag) {
< flat_src_reg = TheISA::flattenIntIndex(inst->tcBase(), src_reg);
< DPRINTF(Rename, "Flattening index %d to %d.\n", (int)src_reg, (int)flat_src_reg);
< }
< inst->flattenSrcReg(src_idx, flat_src_reg);
1016c969
< PhysRegIndex renamed_reg = renameMap[tid]->lookup(flat_src_reg);
---
> PhysRegIndex renamed_reg = renameMap[tid]->lookup(src_reg);
1019c972
< "physical reg %i.\n", tid, (int)flat_src_reg,
---
> "physical reg %i.\n", tid, (int)src_reg,
1046,1050d998
< RegIndex flat_dest_reg = dest_reg;
< if (dest_reg < TheISA::FP_Base_DepTag) {
< flat_dest_reg = TheISA::flattenIntIndex(inst->tcBase(), dest_reg);
< DPRINTF(Rename, "Flattening index %d to %d.\n", (int)dest_reg, (int)flat_dest_reg);
< }
1052,1053d999
< inst->flattenDestReg(dest_idx, flat_dest_reg);
<
1056c1002
< rename_result = renameMap[tid]->rename(flat_dest_reg);
---
> rename_result = renameMap[tid]->rename(dest_reg);
1062c1008
< "reg %i.\n", tid, (int)flat_dest_reg,
---
> "reg %i.\n", tid, (int)dest_reg,
1066c1012
< RenameHistory hb_entry(inst->seqNum, flat_dest_reg,
---
> RenameHistory hb_entry(inst->seqNum, dest_reg,
1290,1292c1236,1237
< if (resumeSerialize) {
< DPRINTF(Rename, "[tid:%u]: Done squashing, switching to serialize.\n",
< tid);
---
> DPRINTF(Rename, "[tid:%u]: Done squashing, switching to running.\n",
> tid);
1294,1303c1239
< renameStatus[tid] = SerializeStall;
< return true;
< } else if (resumeUnblocking) {
< DPRINTF(Rename, "[tid:%u]: Done squashing, switching to unblocking.\n",
< tid);
< renameStatus[tid] = Unblocking;
< return true;
< } else {
< DPRINTF(Rename, "[tid:%u]: Done squashing, switching to running.\n",
< tid);
---
> renameStatus[tid] = Running;
1305,1307c1241
< renameStatus[tid] = Running;
< return false;
< }
---
> return false;