blob: 7463d47b4f3ed503659f591b04c1dee7fb22ccad [file] [log] [blame]
Pankaj Gupta988bbb22020-12-09 14:02:40 +05301/*
2 * Copyright 2018-2020 NXP
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7
8#include <common/bl_common.h>
9#include <common/desc_image_load.h>
10#ifdef CSF_HEADER_PREPENDED
11#include <csf_hdr.h>
12#endif
13#include <plat/common/platform.h>
14#include <platform_def.h>
15
16/*******************************************************************************
17 * Following descriptor provides BL image/ep information that gets used
18 * by BL2 to load the images and also subset of this information is
19 * passed to next BL image. The image loading sequence is managed by
20 * populating the images in required loading order. The image execution
21 * sequence is managed by populating the `next_handoff_image_id` with
22 * the next executable image id.
23 ******************************************************************************/
24static bl_mem_params_node_t bl2_mem_params_descs[] = {
25 /* Fill BL31 related information */
26 {
27 .image_id = BL31_IMAGE_ID,
28
29 SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP,
30 VERSION_2, entry_point_info_t,
31 SECURE | EXECUTABLE | EP_FIRST_EXE),
32 .ep_info.pc = BL31_BASE,
33 .ep_info.spsr = SPSR_64(MODE_EL3, MODE_SP_ELX,
34 DISABLE_ALL_EXCEPTIONS),
35#if DEBUG
36 .ep_info.args.arg1 = LS_BL31_PLAT_PARAM_VAL,
37#endif
38
39 SET_STATIC_PARAM_HEAD(image_info, PARAM_EP,
40 VERSION_2, image_info_t, IMAGE_ATTRIB_PLAT_SETUP),
41#ifdef CSF_HEADER_PREPENDED
42 .image_info.image_base = BL31_BASE - CSF_HDR_SZ,
43 .image_info.image_max_size = (BL31_LIMIT - BL31_BASE) +
44 CSF_HDR_SZ,
45#else
46 .image_info.image_base = BL31_BASE,
47 .image_info.image_max_size = (BL31_LIMIT - BL31_BASE),
48#endif
49
50# ifdef NXP_LOAD_BL32
51 .next_handoff_image_id = BL32_IMAGE_ID,
52# else
53 .next_handoff_image_id = BL33_IMAGE_ID,
54# endif
55 },
56# ifdef NXP_LOAD_BL32
57 /* Fill BL32 related information */
58 {
59 .image_id = BL32_IMAGE_ID,
60
61 SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP,
62 VERSION_2, entry_point_info_t, SECURE | EXECUTABLE),
63 .ep_info.pc = BL32_BASE,
64
65 SET_STATIC_PARAM_HEAD(image_info, PARAM_EP,
66 VERSION_2, image_info_t, 0),
67#ifdef CSF_HEADER_PREPENDED
68 .image_info.image_base = BL32_BASE - CSF_HDR_SZ,
69 .image_info.image_max_size = (BL32_LIMIT - BL32_BASE) +
70 CSF_HDR_SZ,
71#else
72 .image_info.image_base = BL32_BASE,
73 .image_info.image_max_size = (BL32_LIMIT - BL32_BASE),
74#endif
75 .next_handoff_image_id = BL33_IMAGE_ID,
76 },
77# endif /* BL32_BASE */
78
79 /* Fill BL33 related information */
80 {
81 .image_id = BL33_IMAGE_ID,
82 SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP,
83 VERSION_2, entry_point_info_t, NON_SECURE | EXECUTABLE),
84 .ep_info.pc = BL33_BASE,
85
86 SET_STATIC_PARAM_HEAD(image_info, PARAM_EP,
87 VERSION_2, image_info_t, 0),
88#ifdef CSF_HEADER_PREPENDED
89 .image_info.image_base = BL33_BASE - CSF_HDR_SZ,
90 .image_info.image_max_size = (BL33_LIMIT - BL33_BASE) +
91 CSF_HDR_SZ,
92#else
93 .image_info.image_base = BL33_BASE,
94 .image_info.image_max_size = BL33_LIMIT - BL33_BASE,
95#endif
96 .ep_info.spsr = SPSR_64(MODE_EL1, MODE_SP_ELX,
97 DISABLE_ALL_EXCEPTIONS),
98
99 .next_handoff_image_id = INVALID_IMAGE_ID,
100 }
101};
102
103REGISTER_BL_IMAGE_DESCS(bl2_mem_params_descs)