• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #include <assert.h>
8 
9 #include <common/bl_common.h>
10 #include <common/desc_image_load.h>
11 #include <plat/arm/common/plat_arm.h>
12 
13 #if JUNO_AARCH32_EL3_RUNTIME
14 /*******************************************************************************
15  * This function changes the spsr for BL32 image to bypass
16  * the check in BL1 AArch64 exception handler. This is needed in the aarch32
17  * boot flow as the core comes up in aarch64 and to enter the BL32 image a warm
18  * reset in aarch32 state is required.
19  ******************************************************************************/
arm_bl2_plat_handle_post_image_load(unsigned int image_id)20 int arm_bl2_plat_handle_post_image_load(unsigned int image_id)
21 {
22 	int err = arm_bl2_handle_post_image_load(image_id);
23 
24 	if (!err && (image_id == BL32_IMAGE_ID)) {
25 		bl_mem_params_node_t *bl_mem_params = get_bl_mem_params_node(image_id);
26 		assert(bl_mem_params);
27 		bl_mem_params->ep_info.spsr = SPSR_64(MODE_EL3, MODE_SP_ELX,
28 			DISABLE_ALL_EXCEPTIONS);
29 	}
30 
31 	return err;
32 }
33 #endif /* JUNO_AARCH32_EL3_RUNTIME */
34