diff options
author | Summer Qin <summer.qin@arm.com> | 2017-04-24 16:49:28 +0100 |
---|---|---|
committer | Edison Ai <edison.ai@arm.com> | 2017-08-09 18:06:05 +0800 |
commit | 54661cd2483a62b8df7b11b6fedbdb5e29bbedbf (patch) | |
tree | a2828bd40414aa63a3c87530121b20875678e374 /plat/arm/common/arm_bl2_setup.c | |
parent | 71fb396440f51b21401f24c925b9a97a224a4d24 (diff) | |
download | trusted-firmware-a-54661cd2483a62b8df7b11b6fedbdb5e29bbedbf.tar.gz |
Add Trusted OS extra image parsing support for ARM standard platforms
Trusted OS may have extra images to be loaded. Load them one by one
and do the parsing. In this patch, ARM TF need to load up to 3 images
for optee os: header, pager and paged images. Header image is the info
about optee os and images. Pager image include pager code and data.
Paged image include the paging parts using virtual memory.
Change-Id: Ia3bcfa6d8a3ed7850deb5729654daca7b00be394
Signed-off-by: Summer Qin <summer.qin@arm.com>
Diffstat (limited to 'plat/arm/common/arm_bl2_setup.c')
-rw-r--r-- | plat/arm/common/arm_bl2_setup.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/plat/arm/common/arm_bl2_setup.c b/plat/arm/common/arm_bl2_setup.c index b7621b8539..9182bd1284 100644 --- a/plat/arm/common/arm_bl2_setup.c +++ b/plat/arm/common/arm_bl2_setup.c @@ -11,6 +11,9 @@ #include <console.h> #include <debug.h> #include <desc_image_load.h> +#ifdef SPD_opteed +#include <optee_utils.h> +#endif #include <plat_arm.h> #include <platform.h> #include <platform_def.h> @@ -230,11 +233,29 @@ int arm_bl2_handle_post_image_load(unsigned int image_id) { int err = 0; bl_mem_params_node_t *bl_mem_params = get_bl_mem_params_node(image_id); +#ifdef SPD_opteed + bl_mem_params_node_t *pager_mem_params = NULL; + bl_mem_params_node_t *paged_mem_params = NULL; +#endif assert(bl_mem_params); switch (image_id) { #ifdef AARCH64 case BL32_IMAGE_ID: +#ifdef SPD_opteed + pager_mem_params = get_bl_mem_params_node(BL32_EXTRA1_IMAGE_ID); + assert(pager_mem_params); + + paged_mem_params = get_bl_mem_params_node(BL32_EXTRA2_IMAGE_ID); + assert(paged_mem_params); + + err = parse_optee_header(&bl_mem_params->ep_info, + &pager_mem_params->image_info, + &paged_mem_params->image_info); + if (err != 0) { + WARN("OPTEE header parse error.\n"); + } +#endif bl_mem_params->ep_info.spsr = arm_get_spsr_for_bl32_entry(); break; #endif |