mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-24 05:54:08 +00:00
aarch32: optee: define the OP-TEE secure payload
AArch32 only platforms can boot the OP-TEE secure firmware as a BL32 secure payload. Such configuration can be defined through AARCH32_SP=optee. The source files can rely on AARCH32_SP_OPTEE to condition OP-TEE boot specific instruction sequences. OP-TEE does not expect ARM Trusted Firmware formatted structure as boot argument. Load sequence is expected to have already loaded to OP-TEE boot arguments into the bl32 entrypoint info structure. Last, AArch32 platform can only boot AArch32 OP-TEE images. Change-Id: Ic28eec5004315fc9111051add6bb1a1d607fc815 Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
This commit is contained in:
parent
3fe81dcf5d
commit
10c6695854
3 changed files with 32 additions and 6 deletions
|
@ -87,8 +87,10 @@ entry_point_info_t *bl2_load_images(void)
|
|||
assert(bl2_to_next_bl_params->h.version >= VERSION_2);
|
||||
assert(bl2_to_next_bl_params->head->ep_info);
|
||||
|
||||
/* Populate arg0 for the next BL image */
|
||||
bl2_to_next_bl_params->head->ep_info->args.arg0 = (u_register_t)bl2_to_next_bl_params;
|
||||
/* Populate arg0 for the next BL image if not already provided */
|
||||
if (bl2_to_next_bl_params->head->ep_info->args.arg0 == 0)
|
||||
bl2_to_next_bl_params->head->ep_info->args.arg0 =
|
||||
(u_register_t)bl2_to_next_bl_params;
|
||||
|
||||
/* Flush the parameters to be passed to next image */
|
||||
plat_flush_next_bl_params();
|
||||
|
|
15
bl32/optee/optee.mk
Normal file
15
bl32/optee/optee.mk
Normal file
|
@ -0,0 +1,15 @@
|
|||
#
|
||||
# Copyright (c) 2016-2018, ARM Limited and Contributors. All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
#
|
||||
# This makefile only aims at complying with ARM Trusted Firmware build process so
|
||||
# that "optee" is a valid ARM Trusted Firmware AArch32 Secure Playload identifier.
|
||||
|
||||
ifneq ($(ARCH),aarch32)
|
||||
$(error This directory targets AArch32 support)
|
||||
endif
|
||||
|
||||
$(eval $(call add_define,AARCH32_SP_OPTEE))
|
||||
|
||||
$(info ARM Trusted Firmware built for OP-TEE payload support)
|
|
@ -158,9 +158,12 @@ int parse_optee_header(entry_point_info_t *header_ep,
|
|||
* and BL32_EXTRA2_IMAGE_ID to load pager and paged bin.
|
||||
*/
|
||||
if (!tee_validate_header(optee_header)) {
|
||||
INFO("Invalid OPTEE header, legacy mode.\n");
|
||||
/* Set legacy OPTEE runtime arch - aarch64 */
|
||||
INFO("Invalid OPTEE header, set legacy mode.\n");
|
||||
#ifdef AARCH64
|
||||
header_ep->args.arg0 = MODE_RW_64;
|
||||
#else
|
||||
header_ep->args.arg0 = MODE_RW_32;
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -208,10 +211,16 @@ int parse_optee_header(entry_point_info_t *header_ep,
|
|||
header_ep->args.arg2 = paged_image_info->image_size;
|
||||
|
||||
/* Set OPTEE runtime arch - aarch32/aarch64 */
|
||||
if (optee_header->arch == 0)
|
||||
if (optee_header->arch == 0) {
|
||||
header_ep->args.arg0 = MODE_RW_32;
|
||||
else
|
||||
} else {
|
||||
#ifdef AARCH64
|
||||
header_ep->args.arg0 = MODE_RW_64;
|
||||
#else
|
||||
ERROR("Cannot boot an AArch64 OP-TEE\n");
|
||||
return -1;
|
||||
#endif
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue