Make sure only real bits of pstate can be set.

--HG--
extra : convert_revision : 8707bbed2aeb80613f86503e92b63853767adaa9
This commit is contained in:
Gabe Black 2006-11-20 18:08:50 -05:00
parent a0287c1e2d
commit b4a31cb8b5

View file

@ -62,6 +62,11 @@ string SparcISA::getMiscRegName(RegIndex index)
return miscRegName[index];
}
enum RegMask
{
PSTATE_MASK = (((1 << 4) - 1) << 1) | (((1 << 4) - 1) << 6) | (1 << 12)
};
void MiscRegFile::reset()
{
y = 0;
@ -275,7 +280,7 @@ void MiscRegFile::setReg(int miscReg, const MiscReg &val)
tba = val & ULL(~0x7FFF);
break;
case MISCREG_PSTATE:
pstate = val;
pstate = (val & PSTATE_MASK);
break;
case MISCREG_TL:
tl = val;
@ -377,7 +382,7 @@ void MiscRegFile::setRegWithEffect(int miscReg,
//Set up performance counting based on pcr value
break;
case MISCREG_PSTATE:
pstate = val;
pstate = val & PSTATE_MASK;
setImplicitAsis();
return;
case MISCREG_TL: