diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2010-06-02 12:58:15 -0500 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2010-06-02 12:58:15 -0500 |
commit | 2d08b8de9166552a3214012ecdfb98bd8fd3eafb (patch) | |
tree | 612c5e35345bbd2e28e084abbc5ece3d1a236deb /src/arch/arm/isa/formats/fp.isa | |
parent | 57c4d37c102e2fb4d1c86fe1d583ee67c76945b1 (diff) | |
download | gem5-2d08b8de9166552a3214012ecdfb98bd8fd3eafb.tar.xz |
ARM: Implement the version of VMRS that writes to the APSR.
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) | |