16fe8aa2fSYatharth Kochar /* 2e6937287SZelalem * Copyright (c) 2016-2020, ARM Limited and Contributors. All rights reserved. 36fe8aa2fSYatharth Kochar * 482cb2c1aSdp-arm * SPDX-License-Identifier: BSD-3-Clause 56fe8aa2fSYatharth Kochar */ 66fe8aa2fSYatharth Kochar 76fe8aa2fSYatharth Kochar #include <platform_def.h> 86fe8aa2fSYatharth Kochar 909d40e0eSAntonio Nino Diaz #include <common/bl_common.h> 1009d40e0eSAntonio Nino Diaz #include <common/desc_image_load.h> 116fe8aa2fSYatharth Kochar 126fe8aa2fSYatharth Kochar /******************************************************************************* 136fe8aa2fSYatharth Kochar * Following descriptor provides BL image/ep information that gets used 146fe8aa2fSYatharth Kochar * by BL2 to load the images and also subset of this information is 156fe8aa2fSYatharth Kochar * passed to next BL image. The image loading sequence is managed by 166fe8aa2fSYatharth Kochar * populating the images in required loading order. The image execution 176fe8aa2fSYatharth Kochar * sequence is managed by populating the `next_handoff_image_id` with 186fe8aa2fSYatharth Kochar * the next executable image id. 196fe8aa2fSYatharth Kochar ******************************************************************************/ 206fe8aa2fSYatharth Kochar static bl_mem_params_node_t bl2_mem_params_descs[] = { 216fe8aa2fSYatharth Kochar #ifdef SCP_BL2_BASE 226fe8aa2fSYatharth Kochar /* Fill SCP_BL2 related information if it exists */ 236fe8aa2fSYatharth Kochar { 246fe8aa2fSYatharth Kochar .image_id = SCP_BL2_IMAGE_ID, 256fe8aa2fSYatharth Kochar 266fe8aa2fSYatharth Kochar SET_STATIC_PARAM_HEAD(ep_info, PARAM_IMAGE_BINARY, 276fe8aa2fSYatharth Kochar VERSION_2, entry_point_info_t, SECURE | NON_EXECUTABLE), 286fe8aa2fSYatharth Kochar 296fe8aa2fSYatharth Kochar SET_STATIC_PARAM_HEAD(image_info, PARAM_IMAGE_BINARY, 306fe8aa2fSYatharth Kochar VERSION_2, image_info_t, 0), 316fe8aa2fSYatharth Kochar .image_info.image_base = SCP_BL2_BASE, 326fe8aa2fSYatharth Kochar .image_info.image_max_size = PLAT_CSS_MAX_SCP_BL2_SIZE, 336fe8aa2fSYatharth Kochar 346fe8aa2fSYatharth Kochar .next_handoff_image_id = INVALID_IMAGE_ID, 356fe8aa2fSYatharth Kochar }, 366fe8aa2fSYatharth Kochar #endif /* SCP_BL2_BASE */ 376fe8aa2fSYatharth Kochar 386fe8aa2fSYatharth Kochar /* Fill BL32 related information */ 396fe8aa2fSYatharth Kochar { 406fe8aa2fSYatharth Kochar .image_id = BL32_IMAGE_ID, 416fe8aa2fSYatharth Kochar 426fe8aa2fSYatharth Kochar SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP, 436fe8aa2fSYatharth Kochar VERSION_2, entry_point_info_t, 446fe8aa2fSYatharth Kochar SECURE | EXECUTABLE | EP_FIRST_EXE), 456fe8aa2fSYatharth Kochar .ep_info.pc = BL32_BASE, 466fe8aa2fSYatharth Kochar .ep_info.spsr = SPSR_MODE32(MODE32_mon, SPSR_T_ARM, 476fe8aa2fSYatharth Kochar SPSR_E_LITTLE, DISABLE_ALL_EXCEPTIONS), 486fe8aa2fSYatharth Kochar 496fe8aa2fSYatharth Kochar SET_STATIC_PARAM_HEAD(image_info, PARAM_EP, 506fe8aa2fSYatharth Kochar VERSION_2, image_info_t, IMAGE_ATTRIB_PLAT_SETUP), 516fe8aa2fSYatharth Kochar .image_info.image_base = BL32_BASE, 526fe8aa2fSYatharth Kochar .image_info.image_max_size = BL32_LIMIT - BL32_BASE, 536fe8aa2fSYatharth Kochar 546fe8aa2fSYatharth Kochar .next_handoff_image_id = BL33_IMAGE_ID, 556fe8aa2fSYatharth Kochar }, 56cab0b5b0SSoby Mathew /* Fill HW_CONFIG related information if it exists */ 57cab0b5b0SSoby Mathew { 58cab0b5b0SSoby Mathew .image_id = HW_CONFIG_ID, 59cab0b5b0SSoby Mathew SET_STATIC_PARAM_HEAD(ep_info, PARAM_IMAGE_BINARY, 60*e2fe267dSJorge Troncoso VERSION_2, entry_point_info_t, 61*e2fe267dSJorge Troncoso NON_SECURE | NON_EXECUTABLE), 62cab0b5b0SSoby Mathew SET_STATIC_PARAM_HEAD(image_info, PARAM_IMAGE_BINARY, 63cab0b5b0SSoby Mathew VERSION_2, image_info_t, IMAGE_ATTRIB_SKIP_LOADING), 64cab0b5b0SSoby Mathew .next_handoff_image_id = INVALID_IMAGE_ID, 65cab0b5b0SSoby Mathew }, 666fe8aa2fSYatharth Kochar /* Fill BL33 related information */ 676fe8aa2fSYatharth Kochar { 686fe8aa2fSYatharth Kochar .image_id = BL33_IMAGE_ID, 696fe8aa2fSYatharth Kochar 706fe8aa2fSYatharth Kochar SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP, 716fe8aa2fSYatharth Kochar VERSION_2, entry_point_info_t, NON_SECURE | EXECUTABLE), 726fe8aa2fSYatharth Kochar #ifdef PRELOADED_BL33_BASE 736fe8aa2fSYatharth Kochar .ep_info.pc = PRELOADED_BL33_BASE, 746fe8aa2fSYatharth Kochar 756fe8aa2fSYatharth Kochar SET_STATIC_PARAM_HEAD(image_info, PARAM_EP, 766fe8aa2fSYatharth Kochar VERSION_2, image_info_t, IMAGE_ATTRIB_SKIP_LOADING), 776fe8aa2fSYatharth Kochar #else 78ece6fd2dSSandrine Bailleux .ep_info.pc = PLAT_ARM_NS_IMAGE_BASE, 796fe8aa2fSYatharth Kochar 806fe8aa2fSYatharth Kochar SET_STATIC_PARAM_HEAD(image_info, PARAM_EP, 816fe8aa2fSYatharth Kochar VERSION_2, image_info_t, 0), 82ece6fd2dSSandrine Bailleux .image_info.image_base = PLAT_ARM_NS_IMAGE_BASE, 83d57d2b31SSandrine Bailleux .image_info.image_max_size = ARM_DRAM1_BASE + ARM_DRAM1_SIZE 84d57d2b31SSandrine Bailleux - PLAT_ARM_NS_IMAGE_BASE, 856fe8aa2fSYatharth Kochar #endif /* PRELOADED_BL33_BASE */ 866fe8aa2fSYatharth Kochar 876fe8aa2fSYatharth Kochar .next_handoff_image_id = INVALID_IMAGE_ID, 886fe8aa2fSYatharth Kochar } 896fe8aa2fSYatharth Kochar }; 906fe8aa2fSYatharth Kochar 916fe8aa2fSYatharth Kochar REGISTER_BL_IMAGE_DESCS(bl2_mem_params_descs) 92