aboutsummaryrefslogtreecommitdiff
path: root/plat/arm/common/arm_bl2_setup.c
diff options
context:
space:
mode:
authorSummer Qin <summer.qin@arm.com>2017-04-24 16:49:28 +0100
committerEdison Ai <edison.ai@arm.com>2017-08-09 18:06:05 +0800
commit54661cd2483a62b8df7b11b6fedbdb5e29bbedbf (patch)
treea2828bd40414aa63a3c87530121b20875678e374 /plat/arm/common/arm_bl2_setup.c
parent71fb396440f51b21401f24c925b9a97a224a4d24 (diff)
downloadtrusted-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.c21
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