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