diff options
author | Andre Przywara <andre.przywara@arm.com> | 2022-11-17 17:30:43 +0000 |
---|---|---|
committer | Andre Przywara <andre.przywara@arm.com> | 2023-02-27 18:04:14 +0000 |
commit | fc8d2d3980352f92cf378155c1f4449b4a0ab4c0 (patch) | |
tree | 5e089155937a527962ad8cc71b0a89ec180a2526 /lib/el3_runtime/aarch64/context.S | |
parent | ff491036603c34bd80137f5fd43878eae5585197 (diff) | |
download | arm-trusted-firmware-fc8d2d3980352f92cf378155c1f4449b4a0ab4c0.tar.gz |
refactor(trf): enable FEAT_TRF for FEAT_STATE_CHECKED
At the moment we only support FEAT_TRF to be either unconditionally
compiled in, or to be not supported at all.
Add support for runtime detection (ENABLE_TRF_FOR_NS=2), by splitting
is_feat_trf_present() into an ID register reading function and a second
function to report the support status. That function considers both
build time settings and runtime information (if needed), and is used
before we access TRF related registers.
Also move the context saving code from assembly to C, and use the new
is_feat_trf_supported() function to guard its execution.
The FVP platform decided to compile in support unconditionally (=1),
even though FEAT_TRF is an ARMv8.4 feature, so is not available with the
FVP model's default command line.
Change that to the now supported dynamic option (=2), so the right
decision can be made by the code at runtime.
Change-Id: Ia97b01adbe24970a4d837afd463dc5506b7295a3
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Diffstat (limited to 'lib/el3_runtime/aarch64/context.S')
-rw-r--r-- | lib/el3_runtime/aarch64/context.S | 24 |
1 files changed, 0 insertions, 24 deletions
diff --git a/lib/el3_runtime/aarch64/context.S b/lib/el3_runtime/aarch64/context.S index 722b8ae21..d43914848 100644 --- a/lib/el3_runtime/aarch64/context.S +++ b/lib/el3_runtime/aarch64/context.S @@ -41,10 +41,6 @@ .global el2_sysregs_context_save_nv2 .global el2_sysregs_context_restore_nv2 #endif /* CTX_INCLUDE_NEVE_REGS */ -#if ENABLE_TRF_FOR_NS - .global el2_sysregs_context_save_trf - .global el2_sysregs_context_restore_trf -#endif /* ENABLE_TRF_FOR_NS */ #if ENABLE_FEAT_CSV2_2 .global el2_sysregs_context_save_csv2 .global el2_sysregs_context_restore_csv2 @@ -536,26 +532,6 @@ func el2_sysregs_context_restore_nv2 endfunc el2_sysregs_context_restore_nv2 #endif /* CTX_INCLUDE_NEVE_REGS */ -#if ENABLE_TRF_FOR_NS -func el2_sysregs_context_save_trf - /* - * TRFCR_EL2 register is saved only when FEAT_TRF is supported. - */ - mrs x12, TRFCR_EL2 - str x12, [x0, #CTX_TRFCR_EL2] - ret -endfunc el2_sysregs_context_save_trf - -func el2_sysregs_context_restore_trf - /* - * TRFCR_EL2 register is restored only when FEAT_TRF is supported. - */ - ldr x12, [x0, #CTX_TRFCR_EL2] - msr TRFCR_EL2, x12 - ret -endfunc el2_sysregs_context_restore_trf -#endif /* ENABLE_TRF_FOR_NS */ - #if ENABLE_FEAT_CSV2_2 func el2_sysregs_context_save_csv2 /* |