arch-arm: implement the aarch64 ID_ISAR6_EL1 miscregister
authorCiro Santilli <ciro.santilli@arm.com>
Fri, 5 Jun 2020 10:02:46 +0000 (11:02 +0100)
committerCiro Santilli <ciro.santilli@arm.com>
Wed, 25 Nov 2020 08:57:02 +0000 (08:57 +0000)
commit7209a44e0a3d5a7d31201b46773d54f955e4c7a2
treeb3e625038ee5ce9dd41573d57d72b211dd299aac
parent0ff49d741cb7f1541e822722e0c2a34d14d9b289
arch-arm: implement the aarch64 ID_ISAR6_EL1 miscregister

This register is used since the Linux kernel 5.6 aarch64 boot.

This register indicates CPU capabilities in aarch32 mode, and it has the
same value as the aarch32 ID_ISAR6 miscregister, which is also added.

The capability values of those registers are analogous to those present in
aarch64 accessible ID_AA64ISAR0_EL1 and ID_AA64ISAR1_EL1, which refer to
aarch64 capabilities however, and were already implemented before this
commit.

The arm architecture document clarifies that reads to this system register
location before it had been defined should return 0, but we were faulting
instead:

> Prior to the introduction of the features described by this register,
this register was unnamed and reserved, RES0 from EL1, EL2, and EL3.

Change-Id: I70e99536dc98925e88233fd4c6887bbcdd5d87dc
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/30935
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/arch/arm/ArmISA.py
src/arch/arm/fastmodel/CortexA76/thread_context.cc
src/arch/arm/insts/misc64.cc
src/arch/arm/isa.cc
src/arch/arm/kvm/arm_cpu.cc
src/arch/arm/miscregs.cc
src/arch/arm/miscregs.hh
src/arch/arm/tracers/tarmac_parser.cc
src/arch/arm/utility.cc