1*75fbf554SYing-Chun Liu (PaulLiu) /* 2*75fbf554SYing-Chun Liu (PaulLiu) * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved. 3*75fbf554SYing-Chun Liu (PaulLiu) * 4*75fbf554SYing-Chun Liu (PaulLiu) * SPDX-License-Identifier: BSD-3-Clause 5*75fbf554SYing-Chun Liu (PaulLiu) */ 6*75fbf554SYing-Chun Liu (PaulLiu) 7*75fbf554SYing-Chun Liu (PaulLiu) #include <arch.h> 8*75fbf554SYing-Chun Liu (PaulLiu) #include <common/desc_image_load.h> 9*75fbf554SYing-Chun Liu (PaulLiu) #include <plat/common/platform.h> 10*75fbf554SYing-Chun Liu (PaulLiu) #include <platform_def.h> 11*75fbf554SYing-Chun Liu (PaulLiu) 12*75fbf554SYing-Chun Liu (PaulLiu) static bl_mem_params_node_t bl2_mem_params_descs[] = { 13*75fbf554SYing-Chun Liu (PaulLiu) { 14*75fbf554SYing-Chun Liu (PaulLiu) .image_id = BL31_IMAGE_ID, 15*75fbf554SYing-Chun Liu (PaulLiu) SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP, VERSION_2, 16*75fbf554SYing-Chun Liu (PaulLiu) entry_point_info_t, 17*75fbf554SYing-Chun Liu (PaulLiu) SECURE | EXECUTABLE | EP_FIRST_EXE), 18*75fbf554SYing-Chun Liu (PaulLiu) .ep_info.pc = BL31_BASE, 19*75fbf554SYing-Chun Liu (PaulLiu) .ep_info.spsr = SPSR_64(MODE_EL3, MODE_SP_ELX, 20*75fbf554SYing-Chun Liu (PaulLiu) DISABLE_ALL_EXCEPTIONS), 21*75fbf554SYing-Chun Liu (PaulLiu) SET_STATIC_PARAM_HEAD(image_info, PARAM_EP, VERSION_2, image_info_t, 22*75fbf554SYing-Chun Liu (PaulLiu) IMAGE_ATTRIB_PLAT_SETUP), 23*75fbf554SYing-Chun Liu (PaulLiu) .image_info.image_base = BL31_BASE, 24*75fbf554SYing-Chun Liu (PaulLiu) .image_info.image_max_size = BL31_LIMIT - BL31_BASE, 25*75fbf554SYing-Chun Liu (PaulLiu) .next_handoff_image_id = INVALID_IMAGE_ID, 26*75fbf554SYing-Chun Liu (PaulLiu) }, 27*75fbf554SYing-Chun Liu (PaulLiu) { 28*75fbf554SYing-Chun Liu (PaulLiu) .image_id = BL32_IMAGE_ID, 29*75fbf554SYing-Chun Liu (PaulLiu) 30*75fbf554SYing-Chun Liu (PaulLiu) SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP, VERSION_2, 31*75fbf554SYing-Chun Liu (PaulLiu) entry_point_info_t, 32*75fbf554SYing-Chun Liu (PaulLiu) SECURE | EXECUTABLE), 33*75fbf554SYing-Chun Liu (PaulLiu) .ep_info.pc = BL32_BASE, 34*75fbf554SYing-Chun Liu (PaulLiu) 35*75fbf554SYing-Chun Liu (PaulLiu) SET_STATIC_PARAM_HEAD(image_info, PARAM_EP, VERSION_2, 36*75fbf554SYing-Chun Liu (PaulLiu) image_info_t, 0), 37*75fbf554SYing-Chun Liu (PaulLiu) 38*75fbf554SYing-Chun Liu (PaulLiu) .image_info.image_base = BL32_BASE, 39*75fbf554SYing-Chun Liu (PaulLiu) .image_info.image_max_size = BL32_SIZE, 40*75fbf554SYing-Chun Liu (PaulLiu) 41*75fbf554SYing-Chun Liu (PaulLiu) .next_handoff_image_id = BL33_IMAGE_ID, 42*75fbf554SYing-Chun Liu (PaulLiu) }, 43*75fbf554SYing-Chun Liu (PaulLiu) { 44*75fbf554SYing-Chun Liu (PaulLiu) .image_id = BL32_EXTRA1_IMAGE_ID, 45*75fbf554SYing-Chun Liu (PaulLiu) 46*75fbf554SYing-Chun Liu (PaulLiu) SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP, VERSION_2, 47*75fbf554SYing-Chun Liu (PaulLiu) entry_point_info_t, 48*75fbf554SYing-Chun Liu (PaulLiu) SECURE | NON_EXECUTABLE), 49*75fbf554SYing-Chun Liu (PaulLiu) 50*75fbf554SYing-Chun Liu (PaulLiu) SET_STATIC_PARAM_HEAD(image_info, PARAM_EP, VERSION_2, 51*75fbf554SYing-Chun Liu (PaulLiu) image_info_t, IMAGE_ATTRIB_SKIP_LOADING), 52*75fbf554SYing-Chun Liu (PaulLiu) .image_info.image_base = BL32_BASE, 53*75fbf554SYing-Chun Liu (PaulLiu) .image_info.image_max_size = BL32_SIZE, 54*75fbf554SYing-Chun Liu (PaulLiu) 55*75fbf554SYing-Chun Liu (PaulLiu) .next_handoff_image_id = INVALID_IMAGE_ID, 56*75fbf554SYing-Chun Liu (PaulLiu) }, 57*75fbf554SYing-Chun Liu (PaulLiu) { 58*75fbf554SYing-Chun Liu (PaulLiu) /* This is a zero sized image so we don't set base or size */ 59*75fbf554SYing-Chun Liu (PaulLiu) .image_id = BL32_EXTRA2_IMAGE_ID, 60*75fbf554SYing-Chun Liu (PaulLiu) 61*75fbf554SYing-Chun Liu (PaulLiu) SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP, 62*75fbf554SYing-Chun Liu (PaulLiu) VERSION_2, entry_point_info_t, 63*75fbf554SYing-Chun Liu (PaulLiu) SECURE | NON_EXECUTABLE), 64*75fbf554SYing-Chun Liu (PaulLiu) 65*75fbf554SYing-Chun Liu (PaulLiu) SET_STATIC_PARAM_HEAD(image_info, PARAM_EP, 66*75fbf554SYing-Chun Liu (PaulLiu) VERSION_2, image_info_t, 67*75fbf554SYing-Chun Liu (PaulLiu) IMAGE_ATTRIB_SKIP_LOADING), 68*75fbf554SYing-Chun Liu (PaulLiu) .next_handoff_image_id = INVALID_IMAGE_ID, 69*75fbf554SYing-Chun Liu (PaulLiu) }, 70*75fbf554SYing-Chun Liu (PaulLiu) { 71*75fbf554SYing-Chun Liu (PaulLiu) .image_id = BL33_IMAGE_ID, 72*75fbf554SYing-Chun Liu (PaulLiu) SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP, VERSION_2, 73*75fbf554SYing-Chun Liu (PaulLiu) entry_point_info_t, 74*75fbf554SYing-Chun Liu (PaulLiu) NON_SECURE | EXECUTABLE), 75*75fbf554SYing-Chun Liu (PaulLiu) # ifdef PRELOADED_BL33_BASE 76*75fbf554SYing-Chun Liu (PaulLiu) .ep_info.pc = PLAT_NS_IMAGE_OFFSET, 77*75fbf554SYing-Chun Liu (PaulLiu) 78*75fbf554SYing-Chun Liu (PaulLiu) SET_STATIC_PARAM_HEAD(image_info, PARAM_EP, 79*75fbf554SYing-Chun Liu (PaulLiu) VERSION_2, image_info_t, 80*75fbf554SYing-Chun Liu (PaulLiu) IMAGE_ATTRIB_SKIP_LOADING), 81*75fbf554SYing-Chun Liu (PaulLiu) # else 82*75fbf554SYing-Chun Liu (PaulLiu) .ep_info.pc = PLAT_NS_IMAGE_OFFSET, 83*75fbf554SYing-Chun Liu (PaulLiu) 84*75fbf554SYing-Chun Liu (PaulLiu) SET_STATIC_PARAM_HEAD(image_info, PARAM_EP, 85*75fbf554SYing-Chun Liu (PaulLiu) VERSION_2, image_info_t, 0), 86*75fbf554SYing-Chun Liu (PaulLiu) .image_info.image_base = PLAT_NS_IMAGE_OFFSET, 87*75fbf554SYing-Chun Liu (PaulLiu) .image_info.image_max_size = PLAT_NS_IMAGE_SIZE, 88*75fbf554SYing-Chun Liu (PaulLiu) # endif /* PRELOADED_BL33_BASE */ 89*75fbf554SYing-Chun Liu (PaulLiu) 90*75fbf554SYing-Chun Liu (PaulLiu) .next_handoff_image_id = INVALID_IMAGE_ID, 91*75fbf554SYing-Chun Liu (PaulLiu) } 92*75fbf554SYing-Chun Liu (PaulLiu) }; 93*75fbf554SYing-Chun Liu (PaulLiu) 94*75fbf554SYing-Chun Liu (PaulLiu) REGISTER_BL_IMAGE_DESCS(bl2_mem_params_descs); 95