From b7c16f0dad2e9e36af1f435c74095a92177a9dc0 Mon Sep 17 00:00:00 2001 From: Giacomo Travaglini Date: Fri, 3 Feb 2023 19:38:24 +0100 Subject: [PATCH] arch-arm: Remove ISA::initID32 Signed-off-by: Giacomo Travaglini Change-Id: I70cce0b9d99ed5fe146e64c6ee55fa8cedf98ac6 Reviewed-by: Richard Cooper Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70467 Tested-by: kokoro Maintainer: Jason Lowe-Power Reviewed-by: Jason Lowe-Power --- src/arch/arm/isa.cc | 53 --------------------------------------- src/arch/arm/isa.hh | 1 - src/arch/arm/regs/misc.cc | 46 +++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 54 deletions(-) diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc index 4033d0ff4f..8424db582a 100644 --- a/src/arch/arm/isa.cc +++ b/src/arch/arm/isa.cc @@ -142,8 +142,6 @@ ISA::clear() miscRegs[idx] = lookUpMiscReg[idx].reset(); } - initID32(p); - // We always initialize AArch64 ID registers even // if we are in AArch32. This is done since if we // are in SE mode we don't know if our ArmProcess is @@ -257,57 +255,6 @@ ISA::clear64(const ArmISAParams &p) } } -void -ISA::initID32(const ArmISAParams &p) -{ - // Initialize configurable default values - - uint32_t midr; - if (p.midr != 0x0) - midr = p.midr; - else if (highestELIs64) - // Cortex-A57 TRM r0p0 MIDR - midr = 0x410fd070; - else - // Cortex-A15 TRM r0p0 MIDR - midr = 0x410fc0f0; - - miscRegs[MISCREG_MIDR] = midr; - miscRegs[MISCREG_VPIDR] = midr; - - miscRegs[MISCREG_ID_ISAR0] = p.id_isar0; - miscRegs[MISCREG_ID_ISAR1] = p.id_isar1; - miscRegs[MISCREG_ID_ISAR2] = p.id_isar2; - miscRegs[MISCREG_ID_ISAR3] = p.id_isar3; - miscRegs[MISCREG_ID_ISAR4] = p.id_isar4; - - miscRegs[MISCREG_ID_MMFR0] = p.id_mmfr0; - miscRegs[MISCREG_ID_MMFR1] = p.id_mmfr1; - miscRegs[MISCREG_ID_MMFR2] = p.id_mmfr2; - miscRegs[MISCREG_ID_MMFR3] = p.id_mmfr3; - miscRegs[MISCREG_ID_MMFR4] = p.id_mmfr4; - - ISAR5 isar5 = p.id_isar5; - if (release->has(ArmExtension::CRYPTO)) { - isar5.crc32 = 1; - isar5.sha2 = 1; - isar5.sha1 = 1; - isar5.aes = 2; - } else { - isar5.crc32 = 0; - isar5.sha2 = 0; - isar5.sha1 = 0; - isar5.aes = 0; - } - isar5.rdm = release->has(ArmExtension::FEAT_RDM) ? 0x1 : 0x0; - isar5.vcma = release->has(ArmExtension::FEAT_FCMA) ? 0x1 : 0x0; - miscRegs[MISCREG_ID_ISAR5] = isar5; - - ISAR6 isar6 = p.id_isar6; - isar6.jscvt = release->has(ArmExtension::FEAT_JSCVT) ? 0x1 : 0x0; - miscRegs[MISCREG_ID_ISAR6] = isar6; -} - void ISA::initID64(const ArmISAParams &p) { diff --git a/src/arch/arm/isa.hh b/src/arch/arm/isa.hh index 5dd1b38b28..841964113b 100644 --- a/src/arch/arm/isa.hh +++ b/src/arch/arm/isa.hh @@ -172,7 +172,6 @@ namespace ArmISA protected: void clear32(const ArmISAParams &p); void clear64(const ArmISAParams &p); - void initID32(const ArmISAParams &p); void initID64(const ArmISAParams &p); void addressTranslation(MMU::ArmTranslationType tran_type, diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index 3b23a204c6..f5e2502338 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -45,6 +45,7 @@ #include "cpu/thread_context.hh" #include "dev/arm/gic_v3_cpu_interface.hh" #include "sim/full_system.hh" +#include "params/ArmISA.hh" namespace gem5 { @@ -2116,6 +2117,17 @@ ISA::initializeMiscRegMetadata() const bool vhe_implemented = release->has(ArmExtension::FEAT_VHE); const bool sel2_implemented = release->has(ArmExtension::FEAT_SEL2); + const Params &p(params()); + + uint32_t midr; + if (p.midr != 0x0) + midr = p.midr; + else if (highestELIs64) + // Cortex-A57 TRM r0p0 MIDR + midr = 0x410fd070; + else + // Cortex-A15 TRM r0p0 MIDR + midr = 0x410fc0f0; /** * Some registers alias with others, and therefore need to be translated. @@ -2465,6 +2477,7 @@ ISA::initializeMiscRegMetadata() // AArch32 CP15 registers InitReg(MISCREG_MIDR) + .reset(midr) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_CTR) .allPrivileges().exceptUserMode().writes(0); @@ -2488,28 +2501,60 @@ ISA::initializeMiscRegMetadata() InitReg(MISCREG_ID_AFR0) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_MMFR0) + .reset(p.id_mmfr0) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_MMFR1) + .reset(p.id_mmfr1) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_MMFR2) + .reset(p.id_mmfr2) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_MMFR3) + .reset(p.id_mmfr3) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_MMFR4) + .reset(p.id_mmfr4) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_ISAR0) + .reset(p.id_isar0) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_ISAR1) + .reset(p.id_isar1) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_ISAR2) + .reset(p.id_isar2) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_ISAR3) + .reset(p.id_isar3) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_ISAR4) + .reset(p.id_isar4) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_ISAR5) + .reset([p,release=release] () { + ISAR5 isar5 = p.id_isar5; + if (release->has(ArmExtension::CRYPTO)) { + isar5.crc32 = 1; + isar5.sha2 = 1; + isar5.sha1 = 1; + isar5.aes = 2; + } else { + isar5.crc32 = 0; + isar5.sha2 = 0; + isar5.sha1 = 0; + isar5.aes = 0; + } + isar5.rdm = release->has(ArmExtension::FEAT_RDM) ? 0x1 : 0x0; + isar5.vcma = release->has(ArmExtension::FEAT_FCMA) ? 0x1 : 0x0; + return isar5; + }()) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_ISAR6) + .reset([p,release=release] () { + ISAR6 isar6 = p.id_isar6; + isar6.jscvt = release->has(ArmExtension::FEAT_JSCVT) ? 0x1 : 0x0; + return isar6; + }()) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_CCSIDR) .allPrivileges().exceptUserMode().writes(0); @@ -2527,6 +2572,7 @@ ISA::initializeMiscRegMetadata() .bankedChild() .secure().exceptUserMode(); InitReg(MISCREG_VPIDR) + .reset(midr) .hyp().monNonSecure(); InitReg(MISCREG_VMPIDR) .hyp().monNonSecure();