mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-26 14:55:16 +00:00
Merge "docs(cpufeat): clarify description of FEATURE_DETECTION macro" into integration
This commit is contained in:
commit
19220a02c7
1 changed files with 69 additions and 68 deletions
|
@ -188,12 +188,12 @@ Common build options
|
||||||
- ``CTX_INCLUDE_NEVE_REGS``: Numeric value, when set will cause the Armv8.4-NV
|
- ``CTX_INCLUDE_NEVE_REGS``: Numeric value, when set will cause the Armv8.4-NV
|
||||||
registers to be saved/restored when entering/exiting an EL2 execution
|
registers to be saved/restored when entering/exiting an EL2 execution
|
||||||
context. This flag can take values 0 to 2, to align with the
|
context. This flag can take values 0 to 2, to align with the
|
||||||
``FEATURE_DETECTION`` mechanism. Default value is 0.
|
``ENABLE_FEAT`` mechanism. Default value is 0.
|
||||||
|
|
||||||
- ``CTX_INCLUDE_PAUTH_REGS``: Numeric value to enable the Pointer
|
- ``CTX_INCLUDE_PAUTH_REGS``: Numeric value to enable the Pointer
|
||||||
Authentication for Secure world. This will cause the ARMv8.3-PAuth registers
|
Authentication for Secure world. This will cause the ARMv8.3-PAuth registers
|
||||||
to be included when saving and restoring the CPU context as part of world
|
to be included when saving and restoring the CPU context as part of world
|
||||||
switch. This flag can take values 0 to 2, to align with ``FEATURE_DETECTION``
|
switch. This flag can take values 0 to 2, to align with ``ENABLE_FEAT``
|
||||||
mechanism. Default value is 0.
|
mechanism. Default value is 0.
|
||||||
|
|
||||||
Note that Pointer Authentication is enabled for Non-secure world irrespective
|
Note that Pointer Authentication is enabled for Non-secure world irrespective
|
||||||
|
@ -214,7 +214,7 @@ Common build options
|
||||||
|
|
||||||
- ``DISABLE_MTPMU``: Numeric option to disable ``FEAT_MTPMU`` (Multi Threaded
|
- ``DISABLE_MTPMU``: Numeric option to disable ``FEAT_MTPMU`` (Multi Threaded
|
||||||
PMU). ``FEAT_MTPMU`` is an optional feature available on Armv8.6 onwards.
|
PMU). ``FEAT_MTPMU`` is an optional feature available on Armv8.6 onwards.
|
||||||
This flag can take values 0 to 2, to align with the ``FEATURE_DETECTION``
|
This flag can take values 0 to 2, to align with the ``ENABLE_FEAT``
|
||||||
mechanism. Default is ``0``.
|
mechanism. Default is ``0``.
|
||||||
|
|
||||||
- ``DYN_DISABLE_AUTH``: Provides the capability to dynamically disable Trusted
|
- ``DYN_DISABLE_AUTH``: Provides the capability to dynamically disable Trusted
|
||||||
|
@ -261,9 +261,35 @@ Common build options
|
||||||
builds, but this behaviour can be overridden in each platform's Makefile or
|
builds, but this behaviour can be overridden in each platform's Makefile or
|
||||||
in the build command line.
|
in the build command line.
|
||||||
|
|
||||||
|
- ``ENABLE_FEAT``
|
||||||
|
The Arm architecture defines several architecture extension features,
|
||||||
|
named FEAT_xxx in the architecure manual. Some of those features require
|
||||||
|
setup code in higher exception levels, other features might be used by TF-A
|
||||||
|
code itself.
|
||||||
|
Most of the feature flags defined in the TF-A build system permit to take
|
||||||
|
the values 0, 1 or 2, with the following meaning:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
ENABLE_FEAT_* = 0: Feature is disabled statically at compile time.
|
||||||
|
ENABLE_FEAT_* = 1: Feature is enabled unconditionally at compile time.
|
||||||
|
ENABLE_FEAT_* = 2: Feature is enabled, but checked at runtime.
|
||||||
|
|
||||||
|
When setting the flag to 0, the feature is disabled during compilation,
|
||||||
|
and the compiler's optimisation stage and the linker will try to remove
|
||||||
|
as much of this code as possible.
|
||||||
|
If it is defined to 1, the code will use the feature unconditionally, so the
|
||||||
|
CPU is expected to support that feature. The FEATURE_DETECTION debug
|
||||||
|
feature, if enabled, will verify this.
|
||||||
|
If the feature flag is set to 2, support for the feature will be compiled
|
||||||
|
in, but its existence will be checked at runtime, so it works on CPUs with
|
||||||
|
or without the feature. This is mostly useful for platforms which either
|
||||||
|
support multiple different CPUs, or where the CPU is configured at runtime,
|
||||||
|
like in emulators.
|
||||||
|
|
||||||
- ``ENABLE_FEAT_AMU``: Numeric value to enable Activity Monitor Unit
|
- ``ENABLE_FEAT_AMU``: Numeric value to enable Activity Monitor Unit
|
||||||
extensions. This flag can take the values 0 to 2, to align with the
|
extensions. This flag can take the values 0 to 2, to align with the
|
||||||
``FEATURE_DETECTION`` mechanism. This is an optional architectural feature
|
``ENABLE_FEAT`` mechanism. This is an optional architectural feature
|
||||||
available on v8.4 onwards. Some v8.2 implementations also implement an AMU
|
available on v8.4 onwards. Some v8.2 implementations also implement an AMU
|
||||||
and this option can be used to enable this feature on those systems as well.
|
and this option can be used to enable this feature on those systems as well.
|
||||||
This flag can take the values 0 to 2, the default is 0.
|
This flag can take the values 0 to 2, the default is 0.
|
||||||
|
@ -271,52 +297,52 @@ Common build options
|
||||||
- ``ENABLE_FEAT_AMUv1p1``: Numeric value to enable the ``FEAT_AMUv1p1``
|
- ``ENABLE_FEAT_AMUv1p1``: Numeric value to enable the ``FEAT_AMUv1p1``
|
||||||
extension. ``FEAT_AMUv1p1`` is an optional feature available on Arm v8.6
|
extension. ``FEAT_AMUv1p1`` is an optional feature available on Arm v8.6
|
||||||
onwards. This flag can take the values 0 to 2, to align with the
|
onwards. This flag can take the values 0 to 2, to align with the
|
||||||
``FEATURE_DETECTION`` mechanism. Default value is ``0``.
|
``ENABLE_FEAT`` mechanism. Default value is ``0``.
|
||||||
|
|
||||||
- ``ENABLE_FEAT_CSV2_2``: Numeric value to enable the ``FEAT_CSV2_2``
|
- ``ENABLE_FEAT_CSV2_2``: Numeric value to enable the ``FEAT_CSV2_2``
|
||||||
extension. It allows access to the SCXTNUM_EL2 (Software Context Number)
|
extension. It allows access to the SCXTNUM_EL2 (Software Context Number)
|
||||||
register during EL2 context save/restore operations. ``FEAT_CSV2_2`` is an
|
register during EL2 context save/restore operations. ``FEAT_CSV2_2`` is an
|
||||||
optional feature available on Arm v8.0 onwards. This flag can take values
|
optional feature available on Arm v8.0 onwards. This flag can take values
|
||||||
0 to 2, to align with the ``FEATURE_DETECTION`` mechanism.
|
0 to 2, to align with the ``ENABLE_FEAT`` mechanism.
|
||||||
Default value is ``0``.
|
Default value is ``0``.
|
||||||
|
|
||||||
- ``ENABLE_FEAT_DIT``: Numeric value to enable ``FEAT_DIT`` (Data Independent
|
- ``ENABLE_FEAT_DIT``: Numeric value to enable ``FEAT_DIT`` (Data Independent
|
||||||
Timing) extension. It allows setting the ``DIT`` bit of PSTATE in EL3.
|
Timing) extension. It allows setting the ``DIT`` bit of PSTATE in EL3.
|
||||||
``FEAT_DIT`` is a mandatory architectural feature and is enabled from v8.4
|
``FEAT_DIT`` is a mandatory architectural feature and is enabled from v8.4
|
||||||
and upwards. This flag can take the values 0 to 2, to align with the
|
and upwards. This flag can take the values 0 to 2, to align with the
|
||||||
``FEATURE_DETECTION`` mechanism. Default value is ``0``.
|
``ENABLE_FEAT`` mechanism. Default value is ``0``.
|
||||||
|
|
||||||
- ``ENABLE_FEAT_ECV``: Numeric value to enable support for the Enhanced Counter
|
- ``ENABLE_FEAT_ECV``: Numeric value to enable support for the Enhanced Counter
|
||||||
Virtualization feature, allowing for access to the CNTPOFF_EL2 (Counter-timer
|
Virtualization feature, allowing for access to the CNTPOFF_EL2 (Counter-timer
|
||||||
Physical Offset register) during EL2 to EL3 context save/restore operations.
|
Physical Offset register) during EL2 to EL3 context save/restore operations.
|
||||||
Its a mandatory architectural feature and is enabled from v8.6 and upwards.
|
Its a mandatory architectural feature and is enabled from v8.6 and upwards.
|
||||||
This flag can take the values 0 to 2, to align with the ``FEATURE_DETECTION``
|
This flag can take the values 0 to 2, to align with the ``ENABLE_FEAT``
|
||||||
mechanism. Default value is ``0``.
|
mechanism. Default value is ``0``.
|
||||||
|
|
||||||
- ``ENABLE_FEAT_FGT``: Numeric value to enable support for FGT (Fine Grain Traps)
|
- ``ENABLE_FEAT_FGT``: Numeric value to enable support for FGT (Fine Grain Traps)
|
||||||
feature allowing for access to the HDFGRTR_EL2 (Hypervisor Debug Fine-Grained
|
feature allowing for access to the HDFGRTR_EL2 (Hypervisor Debug Fine-Grained
|
||||||
Read Trap Register) during EL2 to EL3 context save/restore operations.
|
Read Trap Register) during EL2 to EL3 context save/restore operations.
|
||||||
Its a mandatory architectural feature and is enabled from v8.6 and upwards.
|
Its a mandatory architectural feature and is enabled from v8.6 and upwards.
|
||||||
This flag can take the values 0 to 2, to align with the ``FEATURE_DETECTION``
|
This flag can take the values 0 to 2, to align with the ``ENABLE_FEAT``
|
||||||
mechanism. Default value is ``0``.
|
mechanism. Default value is ``0``.
|
||||||
|
|
||||||
- ``ENABLE_FEAT_HCX``: Numeric value to set the bit SCR_EL3.HXEn in EL3 to
|
- ``ENABLE_FEAT_HCX``: Numeric value to set the bit SCR_EL3.HXEn in EL3 to
|
||||||
allow access to HCRX_EL2 (extended hypervisor control register) from EL2 as
|
allow access to HCRX_EL2 (extended hypervisor control register) from EL2 as
|
||||||
well as adding HCRX_EL2 to the EL2 context save/restore operations. Its a
|
well as adding HCRX_EL2 to the EL2 context save/restore operations. Its a
|
||||||
mandatory architectural feature and is enabled from v8.7 and upwards. This
|
mandatory architectural feature and is enabled from v8.7 and upwards. This
|
||||||
flag can take the values 0 to 2, to align with the ``FEATURE_DETECTION``
|
flag can take the values 0 to 2, to align with the ``ENABLE_FEAT``
|
||||||
mechanism. Default value is ``0``.
|
mechanism. Default value is ``0``.
|
||||||
|
|
||||||
- ``ENABLE_FEAT_MTE``: Numeric value to enable Memory Tagging Extension
|
- ``ENABLE_FEAT_MTE``: Numeric value to enable Memory Tagging Extension
|
||||||
if the platform wants to use this feature in the Secure world and MTE is
|
if the platform wants to use this feature in the Secure world and MTE is
|
||||||
enabled at ELX. This flag can take values 0 to 2, to align with the
|
enabled at ELX. This flag can take values 0 to 2, to align with the
|
||||||
``FEATURE_DETECTION`` mechanism. Default value is ``0``.
|
``ENABLE_FEAT`` mechanism. Default value is ``0``.
|
||||||
|
|
||||||
- ``ENABLE_FEAT_MTE_PERM``: Numeric value to enable support for
|
- ``ENABLE_FEAT_MTE_PERM``: Numeric value to enable support for
|
||||||
``FEAT_MTE_PERM``, which introduces Allocation tag access permission to
|
``FEAT_MTE_PERM``, which introduces Allocation tag access permission to
|
||||||
memory region attributes. ``FEAT_MTE_PERM`` is a optional architectural
|
memory region attributes. ``FEAT_MTE_PERM`` is a optional architectural
|
||||||
feature available from v8.9 and upwards. This flag can take the values 0 to
|
feature available from v8.9 and upwards. This flag can take the values 0 to
|
||||||
2, to align with the ``FEATURE_DETECTION`` mechanism. Default value is
|
2, to align with the ``ENABLE_FEAT`` mechanism. Default value is
|
||||||
``0``.
|
``0``.
|
||||||
|
|
||||||
- ``ENABLE_FEAT_PAN``: Numeric value to enable the ``FEAT_PAN`` (Privileged
|
- ``ENABLE_FEAT_PAN``: Numeric value to enable the ``FEAT_PAN`` (Privileged
|
||||||
|
@ -324,17 +350,17 @@ Common build options
|
||||||
permission fault for any privileged data access from EL1/EL2 to virtual
|
permission fault for any privileged data access from EL1/EL2 to virtual
|
||||||
memory address, accessible at EL0, provided (HCR_EL2.E2H=1). It is a
|
memory address, accessible at EL0, provided (HCR_EL2.E2H=1). It is a
|
||||||
mandatory architectural feature and is enabled from v8.1 and upwards. This
|
mandatory architectural feature and is enabled from v8.1 and upwards. This
|
||||||
flag can take values 0 to 2, to align with the ``FEATURE_DETECTION``
|
flag can take values 0 to 2, to align with the ``ENABLE_FEAT``
|
||||||
mechanism. Default value is ``0``.
|
mechanism. Default value is ``0``.
|
||||||
|
|
||||||
- ``ENABLE_FEAT_RNG``: Numeric value to enable the ``FEAT_RNG`` extension.
|
- ``ENABLE_FEAT_RNG``: Numeric value to enable the ``FEAT_RNG`` extension.
|
||||||
``FEAT_RNG`` is an optional feature available on Arm v8.5 onwards. This
|
``FEAT_RNG`` is an optional feature available on Arm v8.5 onwards. This
|
||||||
flag can take the values 0 to 2, to align with the ``FEATURE_DETECTION``
|
flag can take the values 0 to 2, to align with the ``ENABLE_FEAT``
|
||||||
mechanism. Default value is ``0``.
|
mechanism. Default value is ``0``.
|
||||||
|
|
||||||
- ``ENABLE_FEAT_RNG_TRAP``: Numeric value to enable the ``FEAT_RNG_TRAP``
|
- ``ENABLE_FEAT_RNG_TRAP``: Numeric value to enable the ``FEAT_RNG_TRAP``
|
||||||
extension. This feature is only supported in AArch64 state. This flag can
|
extension. This feature is only supported in AArch64 state. This flag can
|
||||||
take values 0 to 2, to align with the ``FEATURE_DETECTION`` mechanism.
|
take values 0 to 2, to align with the ``ENABLE_FEAT`` mechanism.
|
||||||
Default value is ``0``. ``FEAT_RNG_TRAP`` is an optional feature from
|
Default value is ``0``. ``FEAT_RNG_TRAP`` is an optional feature from
|
||||||
Armv8.5 onwards.
|
Armv8.5 onwards.
|
||||||
|
|
||||||
|
@ -346,13 +372,13 @@ Common build options
|
||||||
|
|
||||||
- ``ENABLE_FEAT_SEL2``: Numeric value to enable the ``FEAT_SEL2`` (Secure EL2)
|
- ``ENABLE_FEAT_SEL2``: Numeric value to enable the ``FEAT_SEL2`` (Secure EL2)
|
||||||
extension. ``FEAT_SEL2`` is a mandatory feature available on Arm v8.4.
|
extension. ``FEAT_SEL2`` is a mandatory feature available on Arm v8.4.
|
||||||
This flag can take values 0 to 2, to align with the ``FEATURE_DETECTION``
|
This flag can take values 0 to 2, to align with the ``ENABLE_FEAT``
|
||||||
mechanism. Default is ``0``.
|
mechanism. Default is ``0``.
|
||||||
|
|
||||||
- ``ENABLE_FEAT_TWED``: Numeric value to enable the ``FEAT_TWED`` (Delayed
|
- ``ENABLE_FEAT_TWED``: Numeric value to enable the ``FEAT_TWED`` (Delayed
|
||||||
trapping of WFE Instruction) extension. ``FEAT_TWED`` is a optional feature
|
trapping of WFE Instruction) extension. ``FEAT_TWED`` is a optional feature
|
||||||
available on Arm v8.6. This flag can take values 0 to 2, to align with the
|
available on Arm v8.6. This flag can take values 0 to 2, to align with the
|
||||||
``FEATURE_DETECTION`` mechanism. Default is ``0``.
|
``ENABLE_FEAT`` mechanism. Default is ``0``.
|
||||||
|
|
||||||
When ``ENABLE_FEAT_TWED`` is set to ``1``, WFE instruction trapping gets
|
When ``ENABLE_FEAT_TWED`` is set to ``1``, WFE instruction trapping gets
|
||||||
delayed by the amount of value in ``TWED_DELAY``.
|
delayed by the amount of value in ``TWED_DELAY``.
|
||||||
|
@ -361,40 +387,40 @@ Common build options
|
||||||
Host Extensions) extension. It allows access to CONTEXTIDR_EL2 register
|
Host Extensions) extension. It allows access to CONTEXTIDR_EL2 register
|
||||||
during EL2 context save/restore operations.``FEAT_VHE`` is a mandatory
|
during EL2 context save/restore operations.``FEAT_VHE`` is a mandatory
|
||||||
architectural feature and is enabled from v8.1 and upwards. It can take
|
architectural feature and is enabled from v8.1 and upwards. It can take
|
||||||
values 0 to 2, to align with the ``FEATURE_DETECTION`` mechanism.
|
values 0 to 2, to align with the ``ENABLE_FEAT`` mechanism.
|
||||||
Default value is ``0``.
|
Default value is ``0``.
|
||||||
|
|
||||||
- ``ENABLE_FEAT_TCR2``: Numeric value to set the bit SCR_EL3.ENTCR2 in EL3 to
|
- ``ENABLE_FEAT_TCR2``: Numeric value to set the bit SCR_EL3.ENTCR2 in EL3 to
|
||||||
allow access to TCR2_EL2 (extended translation control) from EL2 as
|
allow access to TCR2_EL2 (extended translation control) from EL2 as
|
||||||
well as adding TCR2_EL2 to the EL2 context save/restore operations. Its a
|
well as adding TCR2_EL2 to the EL2 context save/restore operations. Its a
|
||||||
mandatory architectural feature and is enabled from v8.9 and upwards. This
|
mandatory architectural feature and is enabled from v8.9 and upwards. This
|
||||||
flag can take the values 0 to 2, to align with the ``FEATURE_DETECTION``
|
flag can take the values 0 to 2, to align with the ``ENABLE_FEAT``
|
||||||
mechanism. Default value is ``0``.
|
mechanism. Default value is ``0``.
|
||||||
|
|
||||||
- ``ENABLE_FEAT_S2PIE``: Numeric value to enable support for FEAT_S2PIE
|
- ``ENABLE_FEAT_S2PIE``: Numeric value to enable support for FEAT_S2PIE
|
||||||
at EL2 and below, and context switch relevant registers. This flag
|
at EL2 and below, and context switch relevant registers. This flag
|
||||||
can take the values 0 to 2, to align with the ``FEATURE_DETECTION``
|
can take the values 0 to 2, to align with the ``ENABLE_FEAT``
|
||||||
mechanism. Default value is ``0``.
|
mechanism. Default value is ``0``.
|
||||||
|
|
||||||
- ``ENABLE_FEAT_S1PIE``: Numeric value to enable support for FEAT_S1PIE
|
- ``ENABLE_FEAT_S1PIE``: Numeric value to enable support for FEAT_S1PIE
|
||||||
at EL2 and below, and context switch relevant registers. This flag
|
at EL2 and below, and context switch relevant registers. This flag
|
||||||
can take the values 0 to 2, to align with the ``FEATURE_DETECTION``
|
can take the values 0 to 2, to align with the ``ENABLE_FEAT``
|
||||||
mechanism. Default value is ``0``.
|
mechanism. Default value is ``0``.
|
||||||
|
|
||||||
- ``ENABLE_FEAT_S2POE``: Numeric value to enable support for FEAT_S2POE
|
- ``ENABLE_FEAT_S2POE``: Numeric value to enable support for FEAT_S2POE
|
||||||
at EL2 and below, and context switch relevant registers. This flag
|
at EL2 and below, and context switch relevant registers. This flag
|
||||||
can take the values 0 to 2, to align with the ``FEATURE_DETECTION``
|
can take the values 0 to 2, to align with the ``ENABLE_FEAT``
|
||||||
mechanism. Default value is ``0``.
|
mechanism. Default value is ``0``.
|
||||||
|
|
||||||
- ``ENABLE_FEAT_S1POE``: Numeric value to enable support for FEAT_S1POE
|
- ``ENABLE_FEAT_S1POE``: Numeric value to enable support for FEAT_S1POE
|
||||||
at EL2 and below, and context switch relevant registers. This flag
|
at EL2 and below, and context switch relevant registers. This flag
|
||||||
can take the values 0 to 2, to align with the ``FEATURE_DETECTION``
|
can take the values 0 to 2, to align with the ``ENABLE_FEAT``
|
||||||
mechanism. Default value is ``0``.
|
mechanism. Default value is ``0``.
|
||||||
|
|
||||||
- ``ENABLE_FEAT_GCS``: Numeric value to set the bit SCR_EL3.GCSEn in EL3 to
|
- ``ENABLE_FEAT_GCS``: Numeric value to set the bit SCR_EL3.GCSEn in EL3 to
|
||||||
allow use of Guarded Control Stack from EL2 as well as adding the GCS
|
allow use of Guarded Control Stack from EL2 as well as adding the GCS
|
||||||
registers to the EL2 context save/restore operations. This flag can take
|
registers to the EL2 context save/restore operations. This flag can take
|
||||||
the values 0 to 2, to align with the ``FEATURE_DETECTION`` mechanism.
|
the values 0 to 2, to align with the ``ENABLE_FEAT`` mechanism.
|
||||||
Default value is ``0``.
|
Default value is ``0``.
|
||||||
|
|
||||||
- ``ENABLE_LTO``: Boolean option to enable Link Time Optimization (LTO)
|
- ``ENABLE_LTO``: Boolean option to enable Link Time Optimization (LTO)
|
||||||
|
@ -407,7 +433,7 @@ Common build options
|
||||||
various ELs can assign themselves to desired partition to control their
|
various ELs can assign themselves to desired partition to control their
|
||||||
performance aspects.
|
performance aspects.
|
||||||
|
|
||||||
This flag can take values 0 to 2, to align with the ``FEATURE_DETECTION``
|
This flag can take values 0 to 2, to align with the ``ENABLE_FEAT``
|
||||||
mechanism. When this option is set to ``1`` or ``2``, EL3 allows lower ELs to
|
mechanism. When this option is set to ``1`` or ``2``, EL3 allows lower ELs to
|
||||||
access their own MPAM registers without trapping into EL3. This option
|
access their own MPAM registers without trapping into EL3. This option
|
||||||
doesn't make use of partitioning in EL3, however. Platform initialisation
|
doesn't make use of partitioning in EL3, however. Platform initialisation
|
||||||
|
@ -448,7 +474,7 @@ Common build options
|
||||||
|
|
||||||
- ``ENABLE_SPE_FOR_NS`` : Numeric value to enable Statistical Profiling
|
- ``ENABLE_SPE_FOR_NS`` : Numeric value to enable Statistical Profiling
|
||||||
extensions. This is an optional architectural feature for AArch64.
|
extensions. This is an optional architectural feature for AArch64.
|
||||||
This flag can take the values 0 to 2, to align with the ``FEATURE_DETECTION``
|
This flag can take the values 0 to 2, to align with the ``ENABLE_FEAT``
|
||||||
mechanism. The default is 2 but is automatically disabled when the target
|
mechanism. The default is 2 but is automatically disabled when the target
|
||||||
architecture is AArch32.
|
architecture is AArch32.
|
||||||
|
|
||||||
|
@ -462,7 +488,7 @@ Common build options
|
||||||
compatible with the ``CTX_INCLUDE_FPREGS`` build option, and will raise an
|
compatible with the ``CTX_INCLUDE_FPREGS`` build option, and will raise an
|
||||||
assert on platforms where SVE is implemented and ``ENABLE_SVE_FOR_NS``
|
assert on platforms where SVE is implemented and ``ENABLE_SVE_FOR_NS``
|
||||||
enabled. This flag can take the values 0 to 2, to align with the
|
enabled. This flag can take the values 0 to 2, to align with the
|
||||||
``FEATURE_DETECTION`` mechanism. At this time, this build option cannot be
|
``ENABLE_FEAT`` mechanism. At this time, this build option cannot be
|
||||||
used on systems that have SPM_MM enabled. The default is 1.
|
used on systems that have SPM_MM enabled. The default is 1.
|
||||||
|
|
||||||
- ``ENABLE_SVE_FOR_SWD``: Boolean option to enable SVE for the Secure world.
|
- ``ENABLE_SVE_FOR_SWD``: Boolean option to enable SVE for the Secure world.
|
||||||
|
@ -1078,26 +1104,26 @@ Common build options
|
||||||
- ``ENABLE_BRBE_FOR_NS``: Numeric value to enable access to the branch record
|
- ``ENABLE_BRBE_FOR_NS``: Numeric value to enable access to the branch record
|
||||||
buffer registers from NS ELs when FEAT_BRBE is implemented. BRBE is an
|
buffer registers from NS ELs when FEAT_BRBE is implemented. BRBE is an
|
||||||
optional architectural feature for AArch64. This flag can take the values
|
optional architectural feature for AArch64. This flag can take the values
|
||||||
0 to 2, to align with the ``FEATURE_DETECTION`` mechanism. The default is 0
|
0 to 2, to align with the ``ENABLE_FEAT`` mechanism. The default is 0
|
||||||
and it is automatically disabled when the target architecture is AArch32.
|
and it is automatically disabled when the target architecture is AArch32.
|
||||||
|
|
||||||
- ``ENABLE_TRBE_FOR_NS``: Numeric value to enable access of trace buffer
|
- ``ENABLE_TRBE_FOR_NS``: Numeric value to enable access of trace buffer
|
||||||
control registers from NS ELs, NS-EL2 or NS-EL1(when NS-EL2 is implemented
|
control registers from NS ELs, NS-EL2 or NS-EL1(when NS-EL2 is implemented
|
||||||
but unused) when FEAT_TRBE is implemented. TRBE is an optional architectural
|
but unused) when FEAT_TRBE is implemented. TRBE is an optional architectural
|
||||||
feature for AArch64. This flag can take the values 0 to 2, to align with the
|
feature for AArch64. This flag can take the values 0 to 2, to align with the
|
||||||
``FEATURE_DETECTION`` mechanism. The default is 0 and it is automatically
|
``ENABLE_FEAT`` mechanism. The default is 0 and it is automatically
|
||||||
disabled when the target architecture is AArch32.
|
disabled when the target architecture is AArch32.
|
||||||
|
|
||||||
- ``ENABLE_SYS_REG_TRACE_FOR_NS``: Numeric value to enable trace system
|
- ``ENABLE_SYS_REG_TRACE_FOR_NS``: Numeric value to enable trace system
|
||||||
registers access from NS ELs, NS-EL2 or NS-EL1 (when NS-EL2 is implemented
|
registers access from NS ELs, NS-EL2 or NS-EL1 (when NS-EL2 is implemented
|
||||||
but unused). This feature is available if trace unit such as ETMv4.x, and
|
but unused). This feature is available if trace unit such as ETMv4.x, and
|
||||||
ETE(extending ETM feature) is implemented. This flag can take the values
|
ETE(extending ETM feature) is implemented. This flag can take the values
|
||||||
0 to 2, to align with the ``FEATURE_DETECTION`` mechanism. The default is 0.
|
0 to 2, to align with the ``ENABLE_FEAT`` mechanism. The default is 0.
|
||||||
|
|
||||||
- ``ENABLE_TRF_FOR_NS``: Numeric value to enable trace filter control registers
|
- ``ENABLE_TRF_FOR_NS``: Numeric value to enable trace filter control registers
|
||||||
access from NS ELs, NS-EL2 or NS-EL1 (when NS-EL2 is implemented but unused),
|
access from NS ELs, NS-EL2 or NS-EL1 (when NS-EL2 is implemented but unused),
|
||||||
if FEAT_TRF is implemented. This flag can take the values 0 to 2, to align
|
if FEAT_TRF is implemented. This flag can take the values 0 to 2, to align
|
||||||
with the ``FEATURE_DETECTION`` mechanism. This flag is disabled by default.
|
with the ``ENABLE_FEAT`` mechanism. This flag is disabled by default.
|
||||||
|
|
||||||
- ``CONDITIONAL_CMO``: Boolean option to enable call to platform-defined routine
|
- ``CONDITIONAL_CMO``: Boolean option to enable call to platform-defined routine
|
||||||
``plat_can_cmo`` which will return zero if cache management operations should
|
``plat_can_cmo`` which will return zero if cache management operations should
|
||||||
|
@ -1225,7 +1251,7 @@ Common build options
|
||||||
|
|
||||||
- ``ENABLE_RME``: Numeric value to enable support for the ARMv9 Realm
|
- ``ENABLE_RME``: Numeric value to enable support for the ARMv9 Realm
|
||||||
Management Extension. This flag can take the values 0 to 2, to align with
|
Management Extension. This flag can take the values 0 to 2, to align with
|
||||||
the ``FEATURE_DETECTION`` mechanism. Default value is 0.
|
the ``ENABLE_FEAT`` mechanism. Default value is 0.
|
||||||
|
|
||||||
- ``ENABLE_SME_FOR_NS``: Numeric value to enable Scalable Matrix Extension
|
- ``ENABLE_SME_FOR_NS``: Numeric value to enable Scalable Matrix Extension
|
||||||
(SME), SVE, and FPU/SIMD for the non-secure world only. These features share
|
(SME), SVE, and FPU/SIMD for the non-secure world only. These features share
|
||||||
|
@ -1235,7 +1261,7 @@ Common build options
|
||||||
superset of SVE. SME is an optional architectural feature for AArch64.
|
superset of SVE. SME is an optional architectural feature for AArch64.
|
||||||
At this time, this build option cannot be used on systems that have
|
At this time, this build option cannot be used on systems that have
|
||||||
SPD=spmd/SPM_MM and atempting to build with this option will fail.
|
SPD=spmd/SPM_MM and atempting to build with this option will fail.
|
||||||
This flag can take the values 0 to 2, to align with the ``FEATURE_DETECTION``
|
This flag can take the values 0 to 2, to align with the ``ENABLE_FEAT``
|
||||||
mechanism. Default is 0.
|
mechanism. Default is 0.
|
||||||
|
|
||||||
- ``ENABLE_SME2_FOR_NS``: Numeric value to enable Scalable Matrix Extension
|
- ``ENABLE_SME2_FOR_NS``: Numeric value to enable Scalable Matrix Extension
|
||||||
|
@ -1243,7 +1269,7 @@ Common build options
|
||||||
architectural feature for AArch64.
|
architectural feature for AArch64.
|
||||||
This should be set along with ENABLE_SME_FOR_NS=1, if not, the default SME
|
This should be set along with ENABLE_SME_FOR_NS=1, if not, the default SME
|
||||||
accesses will still be trapped. This flag can take the values 0 to 2, to
|
accesses will still be trapped. This flag can take the values 0 to 2, to
|
||||||
align with the ``FEATURE_DETECTION`` mechanism. Default is 0.
|
align with the ``ENABLE_FEAT`` mechanism. Default is 0.
|
||||||
|
|
||||||
- ``ENABLE_SME_FOR_SWD``: Boolean option to enable the Scalable Matrix
|
- ``ENABLE_SME_FOR_SWD``: Boolean option to enable the Scalable Matrix
|
||||||
Extension for secure world. Used along with SVE and FPU/SIMD.
|
Extension for secure world. Used along with SVE and FPU/SIMD.
|
||||||
|
@ -1257,41 +1283,16 @@ Common build options
|
||||||
must not be used if ``SPMC_AT_EL3`` is enabled.
|
must not be used if ``SPMC_AT_EL3`` is enabled.
|
||||||
|
|
||||||
- ``FEATURE_DETECTION``: Boolean option to enable the architectural features
|
- ``FEATURE_DETECTION``: Boolean option to enable the architectural features
|
||||||
detection mechanism. It detects whether the Architectural features enabled
|
verification mechanism. This is a debug feature that compares the
|
||||||
through feature specific build flags are supported by the PE or not by
|
architectural features enabled through the feature specific build flags
|
||||||
validating them either at boot phase or at runtime based on the value
|
(ENABLE_FEAT_xxx) with the features actually available on the CPU running,
|
||||||
possessed by the feature flag (0 to 2) and report error messages at an early
|
and reports any discrepancies.
|
||||||
stage. This flag will also enable errata ordering checking for ``DEBUG``
|
This flag will also enable errata ordering checking for ``DEBUG`` builds.
|
||||||
builds.
|
|
||||||
|
|
||||||
This prevents and benefits us from EL3 runtime exceptions during context save
|
It is expected that this feature is only used for flexible platforms like
|
||||||
and restore routines guarded by these build flags. Henceforth validating them
|
software emulators, or for hardware platforms at bringup time, to verify
|
||||||
before their usage provides more control on the actions taken under them.
|
that the configured feature set matches the CPU.
|
||||||
|
The ``FEATURE_DETECTION`` macro is disabled by default.
|
||||||
The mechanism permits the build flags to take values 0, 1 or 2 and
|
|
||||||
evaluates them accordingly.
|
|
||||||
|
|
||||||
Lets consider ``ENABLE_FEAT_HCX``, build flag for ``FEAT_HCX`` as an example:
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
ENABLE_FEAT_HCX = 0: Feature disabled statically at compile time.
|
|
||||||
ENABLE_FEAT_HCX = 1: Feature Enabled and the flag is validated at boottime.
|
|
||||||
ENABLE_FEAT_HCX = 2: Feature Enabled and the flag is validated at runtime.
|
|
||||||
|
|
||||||
In the above example, if the feature build flag, ``ENABLE_FEAT_HCX`` set to
|
|
||||||
0, feature is disabled statically during compilation. If it is defined as 1,
|
|
||||||
feature is validated, wherein FEAT_HCX is detected at boot time. In case not
|
|
||||||
implemented by the PE, a hard panic is generated. Finally, if the flag is set
|
|
||||||
to 2, feature is validated at runtime.
|
|
||||||
|
|
||||||
Note that the entire implementation is divided into two phases, wherein as
|
|
||||||
as part of phase-1 we are supporting the values 0,1. Value 2 is currently not
|
|
||||||
supported and is planned to be handled explicilty in phase-2 implementation.
|
|
||||||
|
|
||||||
``FEATURE_DETECTION`` macro is disabled by default. Platforms can explicitly
|
|
||||||
make use of this by mechanism, by enabling it to validate whether they have
|
|
||||||
set their build flags properly at an early phase.
|
|
||||||
|
|
||||||
- ``PSA_CRYPTO``: Boolean option for enabling MbedTLS PSA crypto APIs support.
|
- ``PSA_CRYPTO``: Boolean option for enabling MbedTLS PSA crypto APIs support.
|
||||||
The platform will use PSA compliant Crypto APIs during authentication and
|
The platform will use PSA compliant Crypto APIs during authentication and
|
||||||
|
|
Loading…
Add table
Reference in a new issue