summaryrefslogtreecommitdiff
path: root/src/arch/arm/isa/formats/aarch64.isa
diff options
context:
space:
mode:
authorAli Saidi <Ali.Saidi@ARM.com>2014-10-29 23:18:24 -0500
committerAli Saidi <Ali.Saidi@ARM.com>2014-10-29 23:18:24 -0500
commit9900629f83139ed213a440375ea32bc95333b8d9 (patch)
tree1cfe6a9e6f854d8f48c5bb1aa863b8c9c7db838a /src/arch/arm/isa/formats/aarch64.isa
parente3ee27c7b4da421676ca7d77c0953726259890d5 (diff)
downloadgem5-9900629f83139ed213a440375ea32bc95333b8d9.tar.xz
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 (limited to 'src/arch/arm/isa/formats/aarch64.isa')
-rw-r--r--src/arch/arm/isa/formats/aarch64.isa9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/arch/arm/isa/formats/aarch64.isa b/src/arch/arm/isa/formats/aarch64.isa
index 04a8ba527..b5a4dfa21 100644
--- a/src/arch/arm/isa/formats/aarch64.isa
+++ b/src/arch/arm/isa/formats/aarch64.isa
@@ -366,9 +366,12 @@ namespace Aarch64
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",