blob: bf2706d53f0282c7a34eecfed3bbdba5b629f070 [file] [log] [blame]
Jorge Ramirez-Ortizbf084dc2018-09-23 09:36:13 +02001/*
Marek Vasut082fdfc2019-12-01 22:56:43 +01002 * Copyright (c) 2016-2019, ARM Limited and Contributors. All rights reserved.
Jorge Ramirez-Ortizbf084dc2018-09-23 09:36:13 +02003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
Jorge Ramirez-Ortizbf084dc2018-09-23 09:36:13 +02007#include <platform_def.h>
Antonio Nino Diaze0f90632018-12-14 00:18:21 +00008
9#include <common/bl_common.h>
10#include <common/desc_image_load.h>
11#include <lib/xlat_tables/xlat_tables_defs.h>
12#include <plat/common/platform.h>
Jorge Ramirez-Ortizbf084dc2018-09-23 09:36:13 +020013
14#if (RCAR_BL33_EXECUTION_EL != 0) && (RCAR_BL33_EXECUTION_EL != 1)
15#error
16#endif
17
18#if (RCAR_BL33_EXECUTION_EL == 0)
19#define BL33_MODE MODE_EL1
20#else
21#define BL33_MODE MODE_EL2
22#endif
23
Marek Vasut93c85fc2018-10-02 20:45:18 +020024extern uint64_t fdt_blob[PAGE_SIZE_4KB / sizeof(uint64_t)];
25
Jorge Ramirez-Ortizbf084dc2018-09-23 09:36:13 +020026static bl_mem_params_node_t bl2_mem_params_descs[] = {
27 {
28 .image_id = BL31_IMAGE_ID,
29
30 SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP, VERSION_2,
31 entry_point_info_t, SECURE | EXECUTABLE | EP_FIRST_EXE),
32 .ep_info.spsr = SPSR_64(MODE_EL3,
33 MODE_SP_ELX, DISABLE_ALL_EXCEPTIONS),
34 .ep_info.pc = BL31_BASE,
35
36
37 SET_STATIC_PARAM_HEAD(image_info, PARAM_EP, VERSION_2,
38 image_info_t, IMAGE_ATTRIB_PLAT_SETUP),
39 .image_info.image_max_size = BL31_LIMIT - BL31_BASE,
40 .image_info.image_base = BL31_BASE,
41
42# ifdef BL32_BASE
43 .next_handoff_image_id = BL32_IMAGE_ID,
44# else
45 .next_handoff_image_id = BL33_IMAGE_ID,
46# endif
47 },
48# ifdef BL32_BASE
49 {
50 .image_id = BL32_IMAGE_ID,
51
52 SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP, VERSION_2,
53 entry_point_info_t, SECURE | EXECUTABLE),
54 .ep_info.pc = BL32_BASE,
55 .ep_info.spsr = 0,
Marek Vasut082fdfc2019-12-01 22:56:43 +010056 .ep_info.args.arg3 = (uintptr_t)fdt_blob,
Jorge Ramirez-Ortizbf084dc2018-09-23 09:36:13 +020057
58 SET_STATIC_PARAM_HEAD(image_info, PARAM_EP, VERSION_2,
59 image_info_t, 0),
60 .image_info.image_max_size = BL32_LIMIT - BL32_BASE,
61 .image_info.image_base = BL32_BASE,
62
63 .next_handoff_image_id = BL33_IMAGE_ID,
64 },
65#endif
66 {
67 .image_id = BL33_IMAGE_ID,
68
69 SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP, VERSION_2,
70 entry_point_info_t, NON_SECURE | EXECUTABLE),
71 .ep_info.spsr = SPSR_64(BL33_MODE, MODE_SP_ELX,
72 DISABLE_ALL_EXCEPTIONS),
73 .ep_info.pc = BL33_BASE,
74#ifdef RCAR_BL33_ARG0
75 .ep_info.args.arg0 = RCAR_BL33_ARG0,
76#endif
Marek Vasutfaea3fb2018-12-13 22:08:24 +010077 .ep_info.args.arg1 = (uintptr_t)fdt_blob,
Jorge Ramirez-Ortizbf084dc2018-09-23 09:36:13 +020078 SET_STATIC_PARAM_HEAD(image_info, PARAM_EP, VERSION_2,
79 image_info_t, 0),
80 .image_info.image_max_size =
81 (uint32_t) (DRAM_LIMIT - BL33_BASE),
82 .image_info.image_base = BL33_BASE,
83
84 .next_handoff_image_id = INVALID_IMAGE_ID,
85 }
86};
87
88REGISTER_BL_IMAGE_DESCS(bl2_mem_params_descs)