diff options
Diffstat (limited to 'lib/el3_runtime')
-rw-r--r-- | lib/el3_runtime/aarch32/context_mgmt.c | 7 | ||||
-rw-r--r-- | lib/el3_runtime/aarch64/context.S | 24 | ||||
-rw-r--r-- | lib/el3_runtime/aarch64/context_mgmt.c | 18 |
3 files changed, 13 insertions, 36 deletions
diff --git a/lib/el3_runtime/aarch32/context_mgmt.c b/lib/el3_runtime/aarch32/context_mgmt.c index af8edf598..e494a86cf 100644 --- a/lib/el3_runtime/aarch32/context_mgmt.c +++ b/lib/el3_runtime/aarch32/context_mgmt.c @@ -11,6 +11,7 @@ #include <platform_def.h> #include <arch.h> +#include <arch_features.h> #include <arch_helpers.h> #include <common/bl_common.h> #include <context.h> @@ -143,9 +144,9 @@ static void enable_extensions_nonsecure(bool el2_unused) sys_reg_trace_enable(); #endif /* ENABLE_SYS_REG_TRACE_FOR_NS */ -#if ENABLE_TRF_FOR_NS - trf_enable(); -#endif /* ENABLE_TRF_FOR_NS */ + if (is_feat_trf_supported()) { + trf_enable(); + } #endif } 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 /* diff --git a/lib/el3_runtime/aarch64/context_mgmt.c b/lib/el3_runtime/aarch64/context_mgmt.c index 54e257b75..4d2079d23 100644 --- a/lib/el3_runtime/aarch64/context_mgmt.c +++ b/lib/el3_runtime/aarch64/context_mgmt.c @@ -507,9 +507,9 @@ static void manage_extensions_nonsecure(bool el2_unused, cpu_context_t *ctx) sys_reg_trace_enable(ctx); #endif /* ENABLE_SYS_REG_TRACE_FOR_NS */ -#if ENABLE_TRF_FOR_NS - trf_enable(); -#endif /* ENABLE_TRF_FOR_NS */ + if (is_feat_trf_supported()) { + trf_enable(); + } #endif } @@ -875,9 +875,9 @@ void cm_el2_sysregs_context_save(uint32_t security_state) #if CTX_INCLUDE_NEVE_REGS el2_sysregs_context_save_nv2(el2_sysregs_ctx); #endif -#if ENABLE_TRF_FOR_NS - el2_sysregs_context_save_trf(el2_sysregs_ctx); -#endif + if (is_feat_trf_supported()) { + write_ctx_reg(el2_sysregs_ctx, CTX_TRFCR_EL2, read_trfcr_el2()); + } #if ENABLE_FEAT_CSV2_2 el2_sysregs_context_save_csv2(el2_sysregs_ctx); #endif @@ -935,9 +935,9 @@ void cm_el2_sysregs_context_restore(uint32_t security_state) #if CTX_INCLUDE_NEVE_REGS el2_sysregs_context_restore_nv2(el2_sysregs_ctx); #endif -#if ENABLE_TRF_FOR_NS - el2_sysregs_context_restore_trf(el2_sysregs_ctx); -#endif + if (is_feat_trf_supported()) { + write_trfcr_el2(read_ctx_reg(el2_sysregs_ctx, CTX_TRFCR_EL2)); + } #if ENABLE_FEAT_CSV2_2 el2_sysregs_context_restore_csv2(el2_sysregs_ctx); #endif |