feat(bl31): aarch64: RESET_TO_BL31_WITH_PARAMS

It is not always the case that RESET_TO_BL31 enabled platforms don't
execute a bootloader before BL31.

For those use cases, being able to receive arguments from that first
loader (i.e: a DTB with TPM logs) might be necessary feature.

This code has been validated on iMX8mm.

Signed-off-by: Jorge Ramirez-Ortiz <jorge@foundries.io>
Change-Id: Ibf00c3867cb1d1012b8b376e64ccaeca1c9d2bff
This commit is contained in:
Jorge Ramirez-Ortiz 2022-04-15 11:46:47 +02:00
parent e96ffdc8b4
commit 25844ff728
No known key found for this signature in database
GPG Key ID: 64F6B61756EB755D
3 changed files with 8 additions and 1 deletions

View File

@ -996,6 +996,7 @@ $(eval $(call assert_booleans,\
PROGRAMMABLE_RESET_ADDRESS \
PSCI_EXTENDED_STATE_ID \
RESET_TO_BL31 \
RESET_TO_BL31_WITH_PARAMS \
SAVE_KEYS \
SEPARATE_CODE_AND_RODATA \
SEPARATE_BL2_NOLOAD_REGION \
@ -1127,6 +1128,7 @@ $(eval $(call add_defines,\
PSCI_EXTENDED_STATE_ID \
RAS_EXTENSION \
RESET_TO_BL31 \
RESET_TO_BL31_WITH_PARAMS \
SEPARATE_CODE_AND_RODATA \
SEPARATE_BL2_NOLOAD_REGION \
SEPARATE_NOBITS_REGION \

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2013-2021, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2013-2022, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@ -67,6 +67,7 @@ func bl31_entrypoint
_exception_vectors=runtime_exceptions \
_pie_fixup_size=BL31_LIMIT - BL31_BASE
#if !RESET_TO_BL31_WITH_PARAMS
/* ---------------------------------------------------------------------
* For RESET_TO_BL31 systems, BL31 is the first bootloader to run so
* there's no argument to relay from a previous bootloader. Zero the
@ -77,6 +78,7 @@ func bl31_entrypoint
mov x21, 0
mov x22, 0
mov x23, 0
#endif /* RESET_TO_BL31_WITH_PARAMS */
#endif /* RESET_TO_BL31 */
/* --------------------------------------------------------------------

View File

@ -254,6 +254,9 @@ RAS_EXTENSION := 0
# By default, BL1 acts as the reset handler, not BL31
RESET_TO_BL31 := 0
# By default, clear the input registers when RESET_TO_BL31 is enabled
RESET_TO_BL31_WITH_PARAMS := 0
# For Chain of Trust
SAVE_KEYS := 0