diff options
author | Andre Przywara <andre.przywara@arm.com> | 2022-11-17 16:42:09 +0000 |
---|---|---|
committer | Andre Przywara <andre.przywara@arm.com> | 2023-03-22 13:33:22 +0000 |
commit | 603a0c6faef4194bd58fd2104971e4100648ed1c (patch) | |
tree | ac38eac04820a0536508f35f615f68ff2ad92f71 /lib/el3_runtime | |
parent | d7f3ed3655b85223583d8c2d9e719f364266ef26 (diff) | |
download | arm-trusted-firmware-603a0c6faef4194bd58fd2104971e4100648ed1c.tar.gz |
refactor(cpufeat): enable SYS_REG_TRACE for FEAT_STATE_CHECKED
At the moment we only support access to the trace unit by system
registers (SYS_REG_TRACE) to be either unconditionally compiled in, or
to be not supported at all.
Add support for runtime detection (ENABLE_SYS_REG_TRACE_FOR_NS=2), by
adding is_feat_sys_reg_trace_supported(). That function considers both
build time settings and runtime information (if needed), and is used
before we access SYS_REG_TRACE related registers.
The FVP platform decided to compile in support unconditionally (=1),
even though this is an optional feature, so it 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: I450a574a4f6bd9fc269887037049c94c906f54b2
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Diffstat (limited to 'lib/el3_runtime')
-rw-r--r-- | lib/el3_runtime/aarch32/context_mgmt.c | 6 | ||||
-rw-r--r-- | lib/el3_runtime/aarch64/context_mgmt.c | 6 |
2 files changed, 6 insertions, 6 deletions
diff --git a/lib/el3_runtime/aarch32/context_mgmt.c b/lib/el3_runtime/aarch32/context_mgmt.c index e494a86cf..e7a0e5871 100644 --- a/lib/el3_runtime/aarch32/context_mgmt.c +++ b/lib/el3_runtime/aarch32/context_mgmt.c @@ -140,9 +140,9 @@ static void enable_extensions_nonsecure(bool el2_unused) amu_enable(el2_unused); #endif -#if ENABLE_SYS_REG_TRACE_FOR_NS - sys_reg_trace_enable(); -#endif /* ENABLE_SYS_REG_TRACE_FOR_NS */ + if (is_feat_sys_reg_trace_supported()) { + sys_reg_trace_enable(); + } if (is_feat_trf_supported()) { trf_enable(); diff --git a/lib/el3_runtime/aarch64/context_mgmt.c b/lib/el3_runtime/aarch64/context_mgmt.c index 20eb5f67d..c91070ece 100644 --- a/lib/el3_runtime/aarch64/context_mgmt.c +++ b/lib/el3_runtime/aarch64/context_mgmt.c @@ -510,9 +510,9 @@ static void manage_extensions_nonsecure(bool el2_unused, cpu_context_t *ctx) brbe_enable(); } -#if ENABLE_SYS_REG_TRACE_FOR_NS - sys_reg_trace_enable(ctx); -#endif /* ENABLE_SYS_REG_TRACE_FOR_NS */ + if (is_feat_sys_reg_trace_supported()) { + sys_reg_trace_enable(ctx); + } if (is_feat_trf_supported()) { trf_enable(); |