changeset aa23216161fa in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=aa23216161fa
description:
arm: Mark some miscregs (timer counter) registers at unverifiable.
The checker can't verify timer registers, so it should just grab the
version
from the executing CPU, otherwise it could get a larger value and
diverge
execution.
diffstat:
src/arch/arm/isa/formats/aarch64.isa | 9 +-
src/arch/arm/isa/formats/misc.isa | 8 +-
src/arch/arm/miscregs.cc | 1210 +++++++++++++++++-----------------
src/arch/arm/miscregs.hh | 2 +
4 files changed, 619 insertions(+), 610 deletions(-)
diffs (truncated from 1885 to 300 lines):
diff -r 38c7a9ea7729 -r aa23216161fa src/arch/arm/isa/formats/aarch64.isa
--- a/src/arch/arm/isa/formats/aarch64.isa Wed Oct 29 23:18:24 2014 -0500
+++ b/src/arch/arm/isa/formats/aarch64.isa Wed Oct 29 23:18:24 2014 -0500
@@ -366,9 +366,12 @@
if (miscReg == MISCREG_DC_ZVA_Xt && !read)
return new Dczva(machInst, rt, (IntRegIndex)
miscReg, iss);
- if (read)
- return new Mrs64(machInst, rt, (IntRegIndex)
miscReg, iss);
- else
+ if (read) {
+ StaticInstPtr si = new Mrs64(machInst, rt,
(IntRegIndex) miscReg, iss);
+ if (miscRegInfo[miscReg][MISCREG_UNVERIFIABLE])
+ si->setFlag(StaticInst::IsUnverifiable);
+ return si;
+ } else
return new Msr64(machInst, (IntRegIndex) miscReg,
rt, iss);
} else if (miscRegInfo[miscReg][MISCREG_WARN_NOT_FAIL]) {
std::string full_mnem = csprintf("%s %s",
diff -r 38c7a9ea7729 -r aa23216161fa src/arch/arm/isa/formats/misc.isa
--- a/src/arch/arm/isa/formats/misc.isa Wed Oct 29 23:18:24 2014 -0500
+++ b/src/arch/arm/isa/formats/misc.isa Wed Oct 29 23:18:24 2014 -0500
@@ -273,8 +273,12 @@
if (miscRegInfo[miscReg][MISCREG_IMPLEMENTED]) {
uint32_t iss = mcrrMrrcIssBuild(isRead, crm, rt, rt2, opc1);
- if (isRead)
- return new Mrrc15(machInst, miscReg, rt2, rt, iss);
+ if (isRead) {
+ StaticInstPtr si = new Mrrc15(machInst, miscReg, rt2, rt,
iss);
+ if (miscRegInfo[miscReg][MISCREG_UNVERIFIABLE])
+ si->setFlag(StaticInst::IsUnverifiable);
+ return si;
+ }
return new Mcrr15(machInst, rt2, rt, miscReg, iss);
} else {
return new FailUnimplemented(isRead ? "mrrc" : "mcrr",
machInst,
diff -r 38c7a9ea7729 -r aa23216161fa src/arch/arm/miscregs.cc
--- a/src/arch/arm/miscregs.cc Wed Oct 29 23:18:24 2014 -0500
+++ b/src/arch/arm/miscregs.cc Wed Oct 29 23:18:24 2014 -0500
@@ -126,1227 +126,1227 @@
bitset<NUM_MISCREG_INFOS> miscRegInfo[NUM_MISCREGS] = {
// MISCREG_CPSR
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_SPSR
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_SPSR_FIQ
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_SPSR_IRQ
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_SPSR_SVC
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_SPSR_MON
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_SPSR_ABT
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_SPSR_HYP
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_SPSR_UND
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_ELR_HYP
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_FPSID
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_FPSCR
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_MVFR1
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_MVFR0
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_FPEXC
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// Helper registers
// MISCREG_CPSR_MODE
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_CPSR_Q
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_FPSCR_Q
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_FPSCR_EXC
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_LOCKADDR
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_LOCKFLAG
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_PRRR_MAIR0
- bitset<NUM_MISCREG_INFOS>(string("0000000000000001101")),
+ bitset<NUM_MISCREG_INFOS>(string("00000000000000011001")),
// MISCREG_PRRR_MAIR0_NS
- bitset<NUM_MISCREG_INFOS>(string("0000000000000010101")),
+ bitset<NUM_MISCREG_INFOS>(string("00000000000000101001")),
// MISCREG_PRRR_MAIR0_S
- bitset<NUM_MISCREG_INFOS>(string("0000000000000010101")),
+ bitset<NUM_MISCREG_INFOS>(string("00000000000000101001")),
// MISCREG_NMRR_MAIR1
- bitset<NUM_MISCREG_INFOS>(string("0000000000000001101")),
+ bitset<NUM_MISCREG_INFOS>(string("00000000000000011001")),
// MISCREG_NMRR_MAIR1_NS
- bitset<NUM_MISCREG_INFOS>(string("0000000000000010101")),
+ bitset<NUM_MISCREG_INFOS>(string("00000000000000101001")),
// MISCREG_NMRR_MAIR1_S
- bitset<NUM_MISCREG_INFOS>(string("0000000000000010101")),
+ bitset<NUM_MISCREG_INFOS>(string("00000000000000101001")),
// MISCREG_PMXEVTYPER_PMCCFILTR
- bitset<NUM_MISCREG_INFOS>(string("0000000000000000101")),
+ bitset<NUM_MISCREG_INFOS>(string("00000000000000001001")),
// MISCREG_SCTLR_RST
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_SEV_MAILBOX
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// AArch32 CP14 registers
// MISCREG_DBGDIDR
- bitset<NUM_MISCREG_INFOS>(string("0101111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("01011111111111000001")),
// MISCREG_DBGDSCRint
- bitset<NUM_MISCREG_INFOS>(string("0101111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("01011111111111000001")),
// MISCREG_DBGDCCINT
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGDTRTXint
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGDTRRXint
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGWFAR
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGVCR
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGDTRRXext
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGDSCRext
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100010")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000100")),
// MISCREG_DBGDTRTXext
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGOSECCR
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGBVR0
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGBVR1
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGBVR2
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGBVR3
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGBVR4
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGBVR5
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGBCR0
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGBCR1
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGBCR2
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGBCR3
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGBCR4
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGBCR5
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGWVR0
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGWVR1
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGWVR2
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGWVR3
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGWCR0
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGWCR1
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGWCR2
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGWCR3
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGDRAR
- bitset<NUM_MISCREG_INFOS>(string("0101111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
// MISCREG_DBGBXVR4
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGBXVR5
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGOSLAR
- bitset<NUM_MISCREG_INFOS>(string("1010111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("10101111111111000000")),
// MISCREG_DBGOSLSR
- bitset<NUM_MISCREG_INFOS>(string("0101111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
// MISCREG_DBGOSDLR
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGPRCR
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGDSAR
- bitset<NUM_MISCREG_INFOS>(string("0101111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
// MISCREG_DBGCLAIMSET
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGCLAIMCLR
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_DBGAUTHSTATUS
- bitset<NUM_MISCREG_INFOS>(string("0101111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
// MISCREG_DBGDEVID2
- bitset<NUM_MISCREG_INFOS>(string("0101111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
// MISCREG_DBGDEVID1
- bitset<NUM_MISCREG_INFOS>(string("0101111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
// MISCREG_DBGDEVID0
- bitset<NUM_MISCREG_INFOS>(string("0101111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
// MISCREG_TEECR
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100000")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
// MISCREG_JIDR
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_TEEHBR
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_JOSCR
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// MISCREG_JMCR
- bitset<NUM_MISCREG_INFOS>(string("1111111111111100001")),
+ bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
// AArch32 CP15 registers
// MISCREG_MIDR
- bitset<NUM_MISCREG_INFOS>(string("0101010101000000001")),
+ bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
// MISCREG_CTR
- bitset<NUM_MISCREG_INFOS>(string("0101010101000000001")),
+ bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
// MISCREG_TCMTR
- bitset<NUM_MISCREG_INFOS>(string("0101010101000000001")),
+ bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
// MISCREG_TLBTR
- bitset<NUM_MISCREG_INFOS>(string("0101010101000000001")),
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev