diff options
Diffstat (limited to 'src/arch/mips/regfile/int_regfile.cc')
-rw-r--r-- | src/arch/mips/regfile/int_regfile.cc | 44 |
1 files changed, 20 insertions, 24 deletions
diff --git a/src/arch/mips/regfile/int_regfile.cc b/src/arch/mips/regfile/int_regfile.cc index c46ecf0b3..4ffbcdfb8 100644 --- a/src/arch/mips/regfile/int_regfile.cc +++ b/src/arch/mips/regfile/int_regfile.cc @@ -37,7 +37,6 @@ using namespace MipsISA; using namespace std; - void IntRegFile::clear() { @@ -48,25 +47,27 @@ IntRegFile::clear() void IntRegFile::setShadowSet(int css) { - DPRINTF(MipsPRA,"Setting Shadow Set to :%d (%s)\n",css,currShadowSet); + DPRINTF(MipsPRA, "Setting Shadow Set to :%d (%s)\n", css, currShadowSet); currShadowSet = css; } IntReg IntRegFile::readReg(int intReg) { - if(intReg < NumIntRegs) - { // Regular GPR Read - DPRINTF(MipsPRA,"Reading Reg: %d, CurrShadowSet: %d\n",intReg,currShadowSet); - if(intReg >= NumIntArchRegs*NumShadowRegSets){ - return regs[intReg+NumIntRegs*currShadowSet]; - } - else { - return regs[(intReg + NumIntArchRegs*currShadowSet) % NumIntArchRegs]; + if (intReg < NumIntRegs) { + // Regular GPR Read + DPRINTF(MipsPRA, "Reading Reg: %d, CurrShadowSet: %d\n", intReg, + currShadowSet); + + if (intReg >= NumIntArchRegs * NumShadowRegSets) { + return regs[intReg + NumIntRegs * currShadowSet]; + } else { + int index = intReg + NumIntArchRegs * currShadowSet; + index = index % NumIntArchRegs; + return regs[index]; } - } - else - { // Read from shadow GPR .. probably called by RDPGPR + } else { + // Read from shadow GPR .. probably called by RDPGPR return regs[intReg]; } } @@ -75,20 +76,16 @@ Fault IntRegFile::setReg(int intReg, const IntReg &val) { if (intReg != ZeroReg) { - - if(intReg < NumIntRegs) - { - if(intReg >= NumIntArchRegs*NumShadowRegSets){ + if (intReg < NumIntRegs) { + if (intReg >= NumIntArchRegs * NumShadowRegSets) regs[intReg] = val; - } - else{ - regs[intReg+NumIntRegs*currShadowSet] = val; - } - } - else{ + else + regs[intReg + NumIntRegs * currShadowSet] = val; + } else { regs[intReg] = val; } } + return NoFault; } @@ -103,4 +100,3 @@ IntRegFile::unserialize(Checkpoint *cp, const std::string §ion) { UNSERIALIZE_ARRAY(regs, NumIntRegs); } - |