// Copy Thread Data From RegFile
// If thread is suspended, it might be re-allocated
- //this->copyToTC(tid);
+ // this->copyToTC(tid);
+
+
+ // @todo: 2-27-2008: Fix how we free up rename mappings
+ // here to alleviate the case for double-freeing registers
+ // in SMT workloads.
// Unbind Int Regs from Rename Map
for (int ireg = 0; ireg < TheISA::NumIntRegs; ireg++) {
freeFloatRegs.push(freed_reg);
}
- //assert(freeIntRegs.size() <= numPhysicalIntRegs);
+ // These assert conditions ensure that the number of free
+ // registers are not more than the # of total Physical Registers.
+ // If this were false, it would mean that registers
+ // have been freed twice, overflowing the free register
+ // pool and potentially crashing SMT workloads.
+ // ----
+ // Comment out for now so as to not potentially break
+ // CMP and single-threaded workloads
+ // ----
+ // assert(freeIntRegs.size() <= numPhysicalIntRegs);
+ // assert(freeFloatRegs.size() <= numPhysicalFloatRegs);
}
inline void