diff options
author | Geoffrey Blake <geoffrey.blake@arm.com> | 2014-05-09 18:58:46 -0400 |
---|---|---|
committer | Geoffrey Blake <geoffrey.blake@arm.com> | 2014-05-09 18:58:46 -0400 |
commit | 29601eada77e66d346def0b219f6ccff48586ace (patch) | |
tree | b869c97cea70229f580e391597a1740dbd05600e /src/arch/arm/miscregs.cc | |
parent | a3306d0d5e4c83fcce7f7d5915a2a16a99d21744 (diff) | |
download | gem5-29601eada77e66d346def0b219f6ccff48586ace.tar.xz |
arm: Panics in miscreg read functions can be tripped by O3 model
Unimplemented miscregs for the generic timer were guarded by panics
in arm/isa.cc which can be tripped by the O3 model if it speculatively
executes a wrong path containing a mrs instruction with a bad miscreg
index. These registers were flagged as implemented and accessible.
This patch changes the miscreg info bit vector to flag them as
unimplemented and inaccessible. In this case, and UndefinedInst
fault will be generated if the register access is not trapped
by a hypervisor.
Diffstat (limited to 'src/arch/arm/miscregs.cc')
-rw-r--r-- | src/arch/arm/miscregs.cc | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/src/arch/arm/miscregs.cc b/src/arch/arm/miscregs.cc index 6fa304938..313ac18f9 100644 --- a/src/arch/arm/miscregs.cc +++ b/src/arch/arm/miscregs.cc @@ -714,15 +714,15 @@ bitset<NUM_MISCREG_INFOS> miscRegInfo[NUM_MISCREGS] = { // MISCREG_CNTP_CTL_S bitset<NUM_MISCREG_INFOS>(string("0011001100111110000")), // MISCREG_CNTV_TVAL - bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")), + bitset<NUM_MISCREG_INFOS>(string("0111100000000000000")), // MISCREG_CNTV_CTL - bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")), + bitset<NUM_MISCREG_INFOS>(string("0111100000000000000")), // MISCREG_CNTHCTL - bitset<NUM_MISCREG_INFOS>(string("1100110000000000001")), + bitset<NUM_MISCREG_INFOS>(string("0100100000000000000")), // MISCREG_CNTHP_TVAL - bitset<NUM_MISCREG_INFOS>(string("1100110000000000001")), + bitset<NUM_MISCREG_INFOS>(string("0100100000000000000")), // MISCREG_CNTHP_CTL - bitset<NUM_MISCREG_INFOS>(string("1100110000000000001")), + bitset<NUM_MISCREG_INFOS>(string("0100100000000000000")), // MISCREG_IL1DATA0 bitset<NUM_MISCREG_INFOS>(string("1111111111000000000")), // MISCREG_IL1DATA1 @@ -762,11 +762,11 @@ bitset<NUM_MISCREG_INFOS> miscRegInfo[NUM_MISCREGS] = { // MISCREG_CNTP_CVAL_S bitset<NUM_MISCREG_INFOS>(string("0011001100111110000")), // MISCREG_CNTV_CVAL - bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")), + bitset<NUM_MISCREG_INFOS>(string("0111100000000000000")), // MISCREG_CNTVOFF bitset<NUM_MISCREG_INFOS>(string("1100110000000000001")), // MISCREG_CNTHP_CVAL - bitset<NUM_MISCREG_INFOS>(string("1100110000000000001")), + bitset<NUM_MISCREG_INFOS>(string("0100100000000000000")), // MISCREG_CPUMERRSR bitset<NUM_MISCREG_INFOS>(string("1111111111000000000")), // MISCREG_L2MERRSR @@ -1258,11 +1258,11 @@ bitset<NUM_MISCREG_INFOS> miscRegInfo[NUM_MISCREGS] = { // MISCREG_CNTP_CVAL_EL0 bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")), // MISCREG_CNTV_TVAL_EL0 - bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")), + bitset<NUM_MISCREG_INFOS>(string("0111100000000000000")), // MISCREG_CNTV_CTL_EL0 - bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")), + bitset<NUM_MISCREG_INFOS>(string("0111100000000000000")), // MISCREG_CNTV_CVAL_EL0 - bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")), + bitset<NUM_MISCREG_INFOS>(string("0111100000000000000")), // MISCREG_PMEVCNTR0_EL0 bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")), // MISCREG_PMEVCNTR1_EL0 @@ -1290,19 +1290,19 @@ bitset<NUM_MISCREG_INFOS> miscRegInfo[NUM_MISCREGS] = { // MISCREG_CNTVOFF_EL2 bitset<NUM_MISCREG_INFOS>(string("1111110000000000001")), // MISCREG_CNTHCTL_EL2 - bitset<NUM_MISCREG_INFOS>(string("1111110000000000001")), + bitset<NUM_MISCREG_INFOS>(string("0111100000000000000")), // MISCREG_CNTHP_TVAL_EL2 - bitset<NUM_MISCREG_INFOS>(string("1111110000000000001")), + bitset<NUM_MISCREG_INFOS>(string("0111100000000000000")), // MISCREG_CNTHP_CTL_EL2 - bitset<NUM_MISCREG_INFOS>(string("1111110000000000001")), + bitset<NUM_MISCREG_INFOS>(string("0111100000000000000")), // MISCREG_CNTHP_CVAL_EL2 - bitset<NUM_MISCREG_INFOS>(string("1111110000000000001")), + bitset<NUM_MISCREG_INFOS>(string("0111100000000000000")), // MISCREG_CNTPS_TVAL_EL1 - bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")), + bitset<NUM_MISCREG_INFOS>(string("0111100000000000000")), // MISCREG_CNTPS_CTL_EL1 - bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")), + bitset<NUM_MISCREG_INFOS>(string("0111100000000000000")), // MISCREG_CNTPS_CVAL_EL1 - bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")), + bitset<NUM_MISCREG_INFOS>(string("0111100000000000000")), // MISCREG_IL1DATA0_EL1 bitset<NUM_MISCREG_INFOS>(string("1111111111000000001")), // MISCREG_IL1DATA1_EL1 |