xref: /rk3399_ARM-atf/plat/renesas/common/bl2_plat_mem_params_desc.c (revision 65d227c3a20c80bb70f796e5839dc96014f0f9cf)
1*499c2713SBiju Das /*
2*499c2713SBiju Das  * Copyright (c) 2016-2019, ARM Limited and Contributors. All rights reserved.
3*499c2713SBiju Das  *
4*499c2713SBiju Das  * SPDX-License-Identifier: BSD-3-Clause
5*499c2713SBiju Das  */
6*499c2713SBiju Das 
7*499c2713SBiju Das #include <platform_def.h>
8*499c2713SBiju Das 
9*499c2713SBiju Das #include <common/bl_common.h>
10*499c2713SBiju Das #include <common/desc_image_load.h>
11*499c2713SBiju Das #include <lib/xlat_tables/xlat_tables_defs.h>
12*499c2713SBiju Das #include <plat/common/platform.h>
13*499c2713SBiju Das 
14*499c2713SBiju Das #if (RCAR_BL33_EXECUTION_EL != 0) && (RCAR_BL33_EXECUTION_EL != 1)
15*499c2713SBiju Das #error
16*499c2713SBiju Das #endif
17*499c2713SBiju Das 
18*499c2713SBiju Das #if (RCAR_BL33_EXECUTION_EL == 0)
19*499c2713SBiju Das #define BL33_MODE MODE_EL1
20*499c2713SBiju Das #else
21*499c2713SBiju Das #define BL33_MODE MODE_EL2
22*499c2713SBiju Das #endif
23*499c2713SBiju Das 
24*499c2713SBiju Das extern uint64_t fdt_blob[PAGE_SIZE_4KB / sizeof(uint64_t)];
25*499c2713SBiju Das 
26*499c2713SBiju Das static bl_mem_params_node_t bl2_mem_params_descs[] = {
27*499c2713SBiju Das 	{
28*499c2713SBiju Das 		.image_id = BL31_IMAGE_ID,
29*499c2713SBiju Das 
30*499c2713SBiju Das 		SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP, VERSION_2,
31*499c2713SBiju Das 			entry_point_info_t, SECURE | EXECUTABLE | EP_FIRST_EXE),
32*499c2713SBiju Das 		.ep_info.spsr = SPSR_64(MODE_EL3,
33*499c2713SBiju Das 			MODE_SP_ELX, DISABLE_ALL_EXCEPTIONS),
34*499c2713SBiju Das 		.ep_info.pc = BL31_BASE,
35*499c2713SBiju Das 
36*499c2713SBiju Das 
37*499c2713SBiju Das 		SET_STATIC_PARAM_HEAD(image_info, PARAM_EP, VERSION_2,
38*499c2713SBiju Das 			image_info_t, IMAGE_ATTRIB_PLAT_SETUP),
39*499c2713SBiju Das 		.image_info.image_max_size = BL31_LIMIT - BL31_BASE,
40*499c2713SBiju Das 		.image_info.image_base = BL31_BASE,
41*499c2713SBiju Das 
42*499c2713SBiju Das # ifdef BL32_BASE
43*499c2713SBiju Das 		.next_handoff_image_id = BL32_IMAGE_ID,
44*499c2713SBiju Das # else
45*499c2713SBiju Das 		.next_handoff_image_id = BL33_IMAGE_ID,
46*499c2713SBiju Das # endif
47*499c2713SBiju Das 	},
48*499c2713SBiju Das # ifdef BL32_BASE
49*499c2713SBiju Das 	{
50*499c2713SBiju Das 		.image_id = BL32_IMAGE_ID,
51*499c2713SBiju Das 
52*499c2713SBiju Das 		SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP, VERSION_2,
53*499c2713SBiju Das 			entry_point_info_t, SECURE | EXECUTABLE),
54*499c2713SBiju Das 		.ep_info.pc = BL32_BASE,
55*499c2713SBiju Das 		.ep_info.spsr = 0,
56*499c2713SBiju Das 		.ep_info.args.arg3 = (uintptr_t)fdt_blob,
57*499c2713SBiju Das 
58*499c2713SBiju Das 		SET_STATIC_PARAM_HEAD(image_info, PARAM_EP, VERSION_2,
59*499c2713SBiju Das 			image_info_t, 0),
60*499c2713SBiju Das 		.image_info.image_max_size = BL32_LIMIT - BL32_BASE,
61*499c2713SBiju Das 		.image_info.image_base = BL32_BASE,
62*499c2713SBiju Das 
63*499c2713SBiju Das 		.next_handoff_image_id = BL33_IMAGE_ID,
64*499c2713SBiju Das 	},
65*499c2713SBiju Das #endif
66*499c2713SBiju Das 	{
67*499c2713SBiju Das 		.image_id = BL33_IMAGE_ID,
68*499c2713SBiju Das 
69*499c2713SBiju Das 		SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP, VERSION_2,
70*499c2713SBiju Das 			entry_point_info_t, NON_SECURE | EXECUTABLE),
71*499c2713SBiju Das 		.ep_info.spsr = SPSR_64(BL33_MODE, MODE_SP_ELX,
72*499c2713SBiju Das 			DISABLE_ALL_EXCEPTIONS),
73*499c2713SBiju Das 		.ep_info.pc = BL33_BASE,
74*499c2713SBiju Das #ifdef RCAR_BL33_ARG0
75*499c2713SBiju Das 		.ep_info.args.arg0 = RCAR_BL33_ARG0,
76*499c2713SBiju Das #endif
77*499c2713SBiju Das 		.ep_info.args.arg1 = (uintptr_t)fdt_blob,
78*499c2713SBiju Das 		SET_STATIC_PARAM_HEAD(image_info, PARAM_EP, VERSION_2,
79*499c2713SBiju Das 			image_info_t, 0),
80*499c2713SBiju Das 		.image_info.image_max_size =
81*499c2713SBiju Das 				(uint32_t) (DRAM_LIMIT - BL33_BASE),
82*499c2713SBiju Das 		.image_info.image_base = BL33_BASE,
83*499c2713SBiju Das 
84*499c2713SBiju Das 		.next_handoff_image_id = INVALID_IMAGE_ID,
85*499c2713SBiju Das 	}
86*499c2713SBiju Das };
87*499c2713SBiju Das 
88*499c2713SBiju Das REGISTER_BL_IMAGE_DESCS(bl2_mem_params_descs)
89