arch-arm: Remove ISA::initID32
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Change-Id: I70cce0b9d99ed5fe146e64c6ee55fa8cedf98ac6 Reviewed-by: Richard Cooper <richard.cooper@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70467 Tested-by: kokoro <noreply+kokoro@google.com> Maintainer: Jason Lowe-Power <power.jg@gmail.com> Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user