diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc index 83df61fb40..9c8e282e20 100644 --- a/src/arch/arm/isa.cc +++ b/src/arch/arm/isa.cc @@ -815,38 +815,7 @@ ISA::setMiscReg(RegIndex idx, RegVal val) return; case MISCREG_FPSCR: - { - const uint32_t ones = (uint32_t)(-1); - FPSCR fpscrMask = 0; - fpscrMask.ioc = ones; - fpscrMask.dzc = ones; - fpscrMask.ofc = ones; - fpscrMask.ufc = ones; - fpscrMask.ixc = ones; - fpscrMask.idc = ones; - fpscrMask.ioe = ones; - fpscrMask.dze = ones; - fpscrMask.ofe = ones; - fpscrMask.ufe = ones; - fpscrMask.ixe = ones; - fpscrMask.ide = ones; - fpscrMask.len = ones; - fpscrMask.fz16 = ones; - fpscrMask.stride = ones; - fpscrMask.rMode = ones; - fpscrMask.fz = ones; - fpscrMask.dn = ones; - fpscrMask.ahp = ones; - fpscrMask.qc = ones; - fpscrMask.v = ones; - fpscrMask.c = ones; - fpscrMask.z = ones; - fpscrMask.n = ones; - newVal = (newVal & (uint32_t)fpscrMask) | - (readMiscRegNoEffect(MISCREG_FPSCR) & - ~(uint32_t)fpscrMask); - tc->getDecoderPtr()->as().setContext(newVal); - } + tc->getDecoderPtr()->as().setContext(newVal); break; case MISCREG_FPSR: { diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index 9203810306..2d76143e08 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -2199,6 +2199,7 @@ ISA::initializeMiscRegMetadata() .reset(p.fpsid) .allPrivileges(); InitReg(MISCREG_FPSCR) + .res0(mask(14, 13) | mask(6, 5)) .allPrivileges(); InitReg(MISCREG_MVFR1) .reset([] () {