mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-16 17:44:19 +00:00
feat(el3-spmc): add a flag to enable support to load SEL0 SP
Introduce a build flag for enabling the support for loading SEL0 SP in EL3 SPMC. Signed-off-by: Nishant Sharma <nishant.sharma@arm.com> Change-Id: I1d63ae4d0d8374a732113565be90d58861506e39
This commit is contained in:
parent
1132f06885
commit
801cd3c84a
4 changed files with 33 additions and 0 deletions
8
Makefile
8
Makefile
|
@ -599,6 +599,12 @@ ifneq (${SPD},none)
|
|||
ifneq ($(SP_LAYOUT_FILE),)
|
||||
BL2_ENABLE_SP_LOAD := 1
|
||||
endif
|
||||
|
||||
ifeq ($(SPMC_AT_EL3_SEL0_SP),1)
|
||||
ifneq ($(SPMC_AT_EL3),1)
|
||||
$(error SEL0 SP cannot be enabled without SPMC at EL3)
|
||||
endif
|
||||
endif
|
||||
else
|
||||
# All other SPDs in spd directory
|
||||
SPD_DIR := spd
|
||||
|
@ -1191,6 +1197,7 @@ $(eval $(call assert_booleans,\
|
|||
SPIN_ON_BL1_EXIT \
|
||||
SPM_MM \
|
||||
SPMC_AT_EL3 \
|
||||
SPMC_AT_EL3_SEL0_SP \
|
||||
SPMD_SPM_AT_SEL2 \
|
||||
ENABLE_SPMD_LP \
|
||||
TRANSFER_LIST \
|
||||
|
@ -1355,6 +1362,7 @@ $(eval $(call add_defines,\
|
|||
SPIN_ON_BL1_EXIT \
|
||||
SPM_MM \
|
||||
SPMC_AT_EL3 \
|
||||
SPMC_AT_EL3_SEL0_SP \
|
||||
SPMD_SPM_AT_SEL2 \
|
||||
TRANSFER_LIST \
|
||||
TRUSTED_BOARD_BOOT \
|
||||
|
|
|
@ -152,6 +152,8 @@ SPMC located at S-EL1, S-EL2 or EL3:
|
|||
exception level is set to S-EL1.
|
||||
``SPMD_SPM_AT_SEL2`` is enabled. The context save/restore routine
|
||||
and exhaustive list of registers is visible at `[4]`_.
|
||||
- **SPMC_AT_EL3_SEL0_SP**: this option enables the support to load SEL0 SP
|
||||
when SPMC at EL3 support is enabled.
|
||||
- **SP_LAYOUT_FILE**: this option specifies a text description file
|
||||
providing paths to SP binary images and manifests in DTS format
|
||||
(see `Describing secure partitions`_). It
|
||||
|
@ -257,6 +259,22 @@ Sample TF-A build command line when the SPMC is located at EL3:
|
|||
PLAT=fvp \
|
||||
all fip
|
||||
|
||||
Sample TF-A build command line when the SPMC is located at EL3 and SEL0 SP is
|
||||
enabled:
|
||||
|
||||
.. code:: shell
|
||||
|
||||
make \
|
||||
CROSS_COMPILE=aarch64-none-elf- \
|
||||
SPD=spmd \
|
||||
SPMD_SPM_AT_SEL2=0 \
|
||||
SPMC_AT_EL3=1 \
|
||||
SPMC_AT_EL3_SEL0_SP=1 \
|
||||
BL32=<path-to-tee-binary> \
|
||||
BL33=<path-to-bl33-binary> \
|
||||
PLAT=fvp \
|
||||
all fip
|
||||
|
||||
FVP model invocation
|
||||
====================
|
||||
|
||||
|
|
|
@ -900,6 +900,10 @@ Common build options
|
|||
disabled). This configuration supports pre-Armv8.4 platforms (aka not
|
||||
implementing the ``FEAT_SEL2`` extension). This is an experimental feature.
|
||||
|
||||
- ``SPMC_AT_EL3_SEL0_SP`` : Boolean option to enable SEL0 SP load support when
|
||||
``SPMC_AT_EL3`` is enabled. The default value if ``0`` (disabled). This
|
||||
option cannot be enabled (``1``) when (``SPMC_AT_EL3``) is disabled.
|
||||
|
||||
- ``SPMC_OPTEE`` : This boolean option is used jointly with the SPM
|
||||
Dispatcher option (``SPD=spmd``) and with ``SPMD_SPM_AT_SEL2=0`` to
|
||||
indicate that the SPMC at S-EL1 is OP-TEE and an OP-TEE specific loading
|
||||
|
|
|
@ -240,6 +240,9 @@ SPM_MM := 0
|
|||
# Use the FF-A SPMC implementation in EL3.
|
||||
SPMC_AT_EL3 := 0
|
||||
|
||||
# Enable SEL0 SP when SPMC is enabled at EL3
|
||||
SPMC_AT_EL3_SEL0_SP :=0
|
||||
|
||||
# Use SPM at S-EL2 as a default config for SPMD
|
||||
SPMD_SPM_AT_SEL2 := 1
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue