diff options
Diffstat (limited to 'src/arch/arm/isa/formats/fp.isa')
-rw-r--r-- | src/arch/arm/isa/formats/fp.isa | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/arch/arm/isa/formats/fp.isa b/src/arch/arm/isa/formats/fp.isa index 83f541584..284876311 100644 --- a/src/arch/arm/isa/formats/fp.isa +++ b/src/arch/arm/isa/formats/fp.isa @@ -409,7 +409,17 @@ let {{ default: return new Unknown(machInst); } - return new Vmrs(machInst, rt, (IntRegIndex)specReg); + if (rt == 0xf) { + CPSR cpsrMask = 0; + cpsrMask.n = 1; + cpsrMask.z = 1; + cpsrMask.c = 1; + cpsrMask.v = 1; + return new VmrsApsr(machInst, INTREG_CONDCODES, + (IntRegIndex)specReg, (uint32_t)cpsrMask); + } else { + return new Vmrs(machInst, rt, (IntRegIndex)specReg); + } } } else { uint32_t vd = (bits(machInst, 7) << 5) | |