diff options
author | Ali Saidi <ali.saidi@arm.com> | 2010-08-25 19:10:42 -0500 |
---|---|---|
committer | Ali Saidi <ali.saidi@arm.com> | 2010-08-25 19:10:42 -0500 |
commit | 99fafb72b87f3b63f205bee7b20b8c19724d6305 (patch) | |
tree | 305127cadcae96140871d128525bc89c5a1486ec /src/arch/arm/isa/templates/vfp.isa | |
parent | 63464d950ec4e8b8f3aa86802ca9fbf1e8c662b6 (diff) | |
download | gem5-99fafb72b87f3b63f205bee7b20b8c19724d6305.tar.xz |
ARM: Fix VFP enabled checks for mem instructions
Diffstat (limited to 'src/arch/arm/isa/templates/vfp.isa')
-rw-r--r-- | src/arch/arm/isa/templates/vfp.isa | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/arch/arm/isa/templates/vfp.isa b/src/arch/arm/isa/templates/vfp.isa index 5de52738c..8ccfedd0d 100644 --- a/src/arch/arm/isa/templates/vfp.isa +++ b/src/arch/arm/isa/templates/vfp.isa @@ -43,9 +43,24 @@ let {{ return disabledFault(); ''' - vmsrrsEnabledCheckCode = ''' + vmsrEnabledCheckCode = ''' if (!vfpEnabled(Cpacr, Cpsr)) - return disabledFault(); + if (dest != (int)MISCREG_FPEXC && dest != (int)MISCREG_FPSID) + return disabledFault(); + if (!inPrivilegedMode(Cpsr)) + if (dest != (int)MISCREG_FPSCR) + return disabledFault(); + + ''' + + vmrsEnabledCheckCode = ''' + if (!vfpEnabled(Cpacr, Cpsr)) + if (op1 != (int)MISCREG_FPEXC && op1 != (int)MISCREG_FPSID && + op1 != (int)MISCREG_MVFR0 && op1 != (int)MISCREG_MVFR1) + return disabledFault(); + if (!inPrivilegedMode(Cpsr)) + if (op1 != (int)MISCREG_FPSCR) + return disabledFault(); ''' }}; |