path: root/plat
diff options
authorAchin Gupta <achin.gupta@arm.com>2014-02-19 17:58:33 +0000
committerDan Handley <dan.handley@arm.com>2014-02-20 19:06:34 +0000
commit35ca35119d9dc51f1665184ab6db5e2861c213b4 (patch)
treead063c1d5bb7b529603570e53a17340d53d19c8b /plat
parenta3050ed521ec1fd6d34d7d8ba5105ac8bc024992 (diff)
Add support for BL3-2 in BL3-1
This patch adds the following support to the BL3-1 stage: 1. BL3-1 allows runtime services to specify and determine the security state of the next image after BL3-1. This has been done by adding the `bl31_set_next_image_type()` & `bl31_get_next_image_type()` apis. The default security state is non-secure. The platform api `bl31_get_next_image_info()` has been modified to let the platform decide which is the next image in the desired security state. 2. BL3-1 exports the `bl31_prepare_next_image_entry()` function to program entry into the target security state. It uses the apis introduced in 1. to do so. 3. BL3-1 reads the information populated by BL2 about the BL3-2 image into its internal data structures. 4. BL3-1 introduces a weakly defined reference `bl32_init()` to allow initialisation of a BL3-2 image. A runtime service like the Secure payload dispatcher will define this function if present. Change-Id: Icc46dcdb9e475ce6575dd3f9a5dc7a48a83d21d1
Diffstat (limited to 'plat')
1 files changed, 21 insertions, 6 deletions
diff --git a/plat/fvp/bl31_plat_setup.c b/plat/fvp/bl31_plat_setup.c
index 019b8e1..01b0a45 100644
--- a/plat/fvp/bl31_plat_setup.c
+++ b/plat/fvp/bl31_plat_setup.c
@@ -72,15 +72,30 @@ meminfo *bl31_plat_sec_mem_layout(void)
return &bl2_to_bl31_args->bl31_meminfo;
+meminfo *bl31_plat_get_bl32_mem_layout(void)
+ return &bl2_to_bl31_args->bl32_meminfo;
- * Return information about passing control to the non-trusted software images
- * to common code.TODO: In the initial architecture, the image after BL31 will
- * always run in the non-secure state. In the final architecture there
- * will be a series of images. This function will need enhancement then
+ * Return a pointer to the 'el_change_info' structure of the next image for the
+ * security state specified. BL33 corresponds to the non-secure image type
+ * while BL32 corresponds to the secure image type. A NULL pointer is returned
+ * if the image does not exist.
-el_change_info *bl31_get_next_image_info(void)
+el_change_info *bl31_get_next_image_info(uint32_t type)
- return &bl2_to_bl31_args->bl33_image_info;
+ el_change_info *next_image_info;
+ next_image_info = (type == NON_SECURE) ?
+ &bl2_to_bl31_args->bl33_image_info :
+ &bl2_to_bl31_args->bl32_image_info;
+ /* None of the images on this platform can have 0x0 as the entrypoint */
+ if (next_image_info->entrypoint)
+ return next_image_info;
+ else
+ return NULL;