summaryrefslogtreecommitdiff
path: root/src/arch/arm/isa.cc
diff options
context:
space:
mode:
authorGiacomo Travaglini <giacomo.travaglini@arm.com>2018-05-17 17:07:16 +0100
committerGiacomo Travaglini <giacomo.travaglini@arm.com>2018-10-09 09:12:48 +0000
commit34975af0971a58eb30e8ee6c8459ddd5af00a39b (patch)
tree26cba5cb6161a05d79462e673ead5d33c3633594 /src/arch/arm/isa.cc
parent8cbb5318234aa7a4ed6f803ed6ffa5d577e28a68 (diff)
downloadgem5-34975af0971a58eb30e8ee6c8459ddd5af00a39b.tar.xz
arch-arm: Add have_crypto System parameter
This patch adds the have_crypto ArmSystem parameter for enabling crypto extension. This is done by modifying the AArch32/AArch64 ID registers at startup time. Change-Id: I6eefb7e6f6354802a14ea639ad53b75f8e1e11c5 Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/13252 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Andreas Sandberg <andreas.sandberg@arm.com> Maintainer: Jason Lowe-Power <jason@lowepower.com>
Diffstat (limited to 'src/arch/arm/isa.cc')
-rw-r--r--src/arch/arm/isa.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc
index 878ff70d7..22d275d52 100644
--- a/src/arch/arm/isa.cc
+++ b/src/arch/arm/isa.cc
@@ -82,12 +82,14 @@ ISA::ISA(Params *p)
highestELIs64 = system->highestELIs64();
haveSecurity = system->haveSecurity();
haveLPAE = system->haveLPAE();
+ haveCrypto = system->haveCrypto();
haveVirtualization = system->haveVirtualization();
haveLargeAsid64 = system->haveLargeAsid64();
physAddrRange = system->physAddrRange();
} else {
highestELIs64 = true; // ArmSystem::highestELIs64 does the same
haveSecurity = haveLPAE = haveVirtualization = false;
+ haveCrypto = false;
haveLargeAsid64 = false;
physAddrRange = 32; // dummy value
}
@@ -122,6 +124,10 @@ ISA::clear()
// AArch32 or AArch64
initID64(p);
+ miscRegs[MISCREG_ID_ISAR5] = insertBits(
+ miscRegs[MISCREG_ID_ISAR5], 19, 4,
+ haveCrypto ? 0x1112 : 0x0);
+
if (FullSystem && system->highestELIs64()) {
// Initialize AArch64 state
clear64(p);
@@ -344,6 +350,10 @@ ISA::initID64(const ArmISAParams *p)
miscRegs[MISCREG_ID_AA64MMFR0_EL1] = insertBits(
miscRegs[MISCREG_ID_AA64MMFR0_EL1], 3, 0,
encodePhysAddrRange64(physAddrRange));
+ // Crypto
+ miscRegs[MISCREG_ID_AA64ISAR0_EL1] = insertBits(
+ miscRegs[MISCREG_ID_AA64ISAR0_EL1], 19, 4,
+ haveCrypto ? 0x1112 : 0x0);
}
void