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