mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-27 15:24:54 +00:00
![]() Armv8.6 introduced the FEAT_LS64 extension, which provides a 64 *byte* store instruction. A related instruction is ST64BV0, which will replace the lowest 32 bits of the data with a value taken from the ACCDATA_EL1 system register (so that EL0 cannot alter them). Using that ST64BV0 instruction and accessing the ACCDATA_EL1 system register is guarded by two SCR_EL3 bits, which we should set to avoid a trap into EL3, when lower ELs use one of those. Add the required bits and pieces to make this feature usable: - Add the ENABLE_FEAT_LS64_ACCDATA build option (defaulting to 0). - Add the CPUID and SCR_EL3 bit definitions associated with FEAT_LS64. - Add a feature check to check for the existing four variants of the LS64 feature and detect future extensions. - Add code to save and restore the ACCDATA_EL1 register on secure/non-secure context switches. - Enable the feature with runtime detection for FVP and Arm FPGA. Please note that the *basic* FEAT_LS64 feature does not feature any trap bits, it's only the addition of the ACCDATA_EL1 system register that adds these traps and the SCR_EL3 bits. Change-Id: Ie3e2ca2d9c4fbbd45c0cc6089accbb825579138a Signed-off-by: Andre Przywara <andre.przywara@arm.com> |
||
---|---|---|
.. | ||
aarch32 | ||
aarch64 | ||
fconf | ||
fdts | ||
include | ||
sp_min | ||
trp | ||
tsp | ||
fvp_bl1_measured_boot.c | ||
fvp_bl1_setup.c | ||
fvp_bl2_el3_setup.c | ||
fvp_bl2_measured_boot.c | ||
fvp_bl2_setup.c | ||
fvp_bl2u_setup.c | ||
fvp_bl31_setup.c | ||
fvp_common.c | ||
fvp_common_measured_boot.c | ||
fvp_console.c | ||
fvp_cpu_errata.mk | ||
fvp_cpu_pwr.c | ||
fvp_def.h | ||
fvp_drtm_addr.c | ||
fvp_drtm_dma_prot.c | ||
fvp_drtm_err.c | ||
fvp_drtm_measurement.c | ||
fvp_drtm_stub.c | ||
fvp_el3_spmc.c | ||
fvp_el3_spmc_logical_sp.c | ||
fvp_el3_token_sign.c | ||
fvp_err.c | ||
fvp_gicv3.c | ||
fvp_io_storage.c | ||
fvp_plat_attest_token.c | ||
fvp_pm.c | ||
fvp_private.h | ||
fvp_realm_attest_key.c | ||
fvp_security.c | ||
fvp_spmd.c | ||
fvp_spmd_logical_sp.c | ||
fvp_stack_protector.c | ||
fvp_sync_traps.c | ||
fvp_topology.c | ||
fvp_trusted_boot.c | ||
jmptbl.i | ||
platform.mk |