57a58
> typedef TheISA::CCReg CCReg;
69a71,73
> /** Condition-code register file. */
> std::vector<CCReg> ccRegFile;
>
85a90,95
> /**
> * The first condition-code physical register index. The
> * condition-code registers follow the floating-point registers.
> */
> unsigned baseCCRegIndex;
>
95c105,106
< unsigned _numPhysicalFloatRegs);
---
> unsigned _numPhysicalFloatRegs,
> unsigned _numPhysicalCCRegs);
110c121
< { return totalNumRegs - baseFloatRegIndex; }
---
> { return baseCCRegIndex - baseFloatRegIndex; }
111a123,126
> /** @return the number of condition-code physical registers. */
> unsigned numCCPhysRegs() const
> { return totalNumRegs - baseCCRegIndex; }
>
130c145
< return (baseFloatRegIndex <= reg_idx && reg_idx < totalNumRegs);
---
> return (baseFloatRegIndex <= reg_idx && reg_idx < baseCCRegIndex);
132a148,156
> /**
> * Return true if the specified physical register index
> * corresponds to a condition-code physical register.
> */
> bool isCCPhysReg(PhysRegIndex reg_idx)
> {
> return (baseCCRegIndex <= reg_idx && reg_idx < totalNumRegs);
> }
>
171a196,209
> /** Reads a condition-code register. */
> CCReg readCCReg(PhysRegIndex reg_idx)
> {
> assert(isCCPhysReg(reg_idx));
>
> // Remove the base CC reg dependency.
> PhysRegIndex reg_offset = reg_idx - baseCCRegIndex;
>
> DPRINTF(IEW, "RegFile: Access to cc register %i, has "
> "data %#x\n", int(reg_idx), ccRegFile[reg_offset]);
>
> return ccRegFile[reg_offset];
> }
>
213a252,264
> /** Sets a condition-code register to the given value. */
> void setCCReg(PhysRegIndex reg_idx, CCReg val)
> {
> assert(isCCPhysReg(reg_idx));
>
> // Remove the base CC reg dependency.
> PhysRegIndex reg_offset = reg_idx - baseCCRegIndex;
>
> DPRINTF(IEW, "RegFile: Setting cc register %i to %#x\n",
> int(reg_idx), (uint64_t)val);
>
> ccRegFile[reg_offset] = val;
> }