summaryrefslogtreecommitdiff
path: root/src/arch/arm/isa/formats
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2010-08-25 19:10:42 -0500
committerGabe Black <gblack@eecs.umich.edu>2010-08-25 19:10:42 -0500
commit63464d950ec4e8b8f3aa86802ca9fbf1e8c662b6 (patch)
tree62269c4404c83a2a371f3d73fc58ff496d472c90 /src/arch/arm/isa/formats
parent93ce7238bf25b4f75f129aa822c70591a0b15a31 (diff)
downloadgem5-63464d950ec4e8b8f3aa86802ca9fbf1e8c662b6.tar.xz
ARM: Seperate out the renamable bits in the FPSCR.
Diffstat (limited to 'src/arch/arm/isa/formats')
-rw-r--r--src/arch/arm/isa/formats/fp.isa17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/arch/arm/isa/formats/fp.isa b/src/arch/arm/isa/formats/fp.isa
index 1482c2119..9d40a4a43 100644
--- a/src/arch/arm/isa/formats/fp.isa
+++ b/src/arch/arm/isa/formats/fp.isa
@@ -1969,7 +1969,11 @@ let {{
default:
return new Unknown(machInst);
}
- return new Vmsr(machInst, (IntRegIndex)specReg, rt);
+ if (specReg == MISCREG_FPSCR) {
+ return new VmsrFpscr(machInst, (IntRegIndex)specReg, rt);
+ } else {
+ return new Vmsr(machInst, (IntRegIndex)specReg, rt);
+ }
}
} else if (l == 0 && c == 1) {
if (bits(a, 2) == 0) {
@@ -2061,8 +2065,15 @@ let {{
cpsrMask.z = 1;
cpsrMask.c = 1;
cpsrMask.v = 1;
- return new VmrsApsr(machInst, INTREG_CONDCODES,
- (IntRegIndex)specReg, (uint32_t)cpsrMask);
+ if (specReg == MISCREG_FPSCR) {
+ return new VmrsApsrFpscr(machInst, INTREG_CONDCODES,
+ (IntRegIndex)specReg, (uint32_t)cpsrMask);
+ } else {
+ return new VmrsApsr(machInst, INTREG_CONDCODES,
+ (IntRegIndex)specReg, (uint32_t)cpsrMask);
+ }
+ } else if (specReg == MISCREG_FPSCR) {
+ return new VmrsFpscr(machInst, rt, (IntRegIndex)specReg);
} else {
return new Vmrs(machInst, rt, (IntRegIndex)specReg);
}