blob: b044f3e75411d371da2f18fe5548906c5c0249b4 [file] [log] [blame]
Yatharth Kochar3345a8d2016-09-12 16:08:41 +01001/*
Julius Wernera0574842019-05-29 17:01:46 -07002 * Copyright (c) 2016-2019, ARM Limited and Contributors. All rights reserved.
Yatharth Kochar3345a8d2016-09-12 16:08:41 +01003 *
dp-armfa3cf0b2017-05-03 09:38:09 +01004 * SPDX-License-Identifier: BSD-3-Clause
Yatharth Kochar3345a8d2016-09-12 16:08:41 +01005 */
Antonio Nino Diaz5eb88372018-11-08 10:20:19 +00006#ifndef DESC_IMAGE_LOAD_H
7#define DESC_IMAGE_LOAD_H
Yatharth Kochar3345a8d2016-09-12 16:08:41 +01008
Antonio Nino Diaze0f90632018-12-14 00:18:21 +00009#include <common/bl_common.h>
Yatharth Kochar3345a8d2016-09-12 16:08:41 +010010
Yatharth Kochar3345a8d2016-09-12 16:08:41 +010011/* Following structure is used to store BL ep/image info. */
12typedef struct bl_mem_params_node {
13 unsigned int image_id;
14 image_info_t image_info;
15 entry_point_info_t ep_info;
16 unsigned int next_handoff_image_id;
17 bl_load_info_node_t load_node_mem;
18 bl_params_node_t params_node_mem;
19} bl_mem_params_node_t;
20
Roberto Vargas2ca18d92018-02-12 12:36:17 +000021extern bl_mem_params_node_t *bl_mem_params_desc_ptr;
22extern unsigned int bl_mem_params_desc_num;
23
Yatharth Kochar3345a8d2016-09-12 16:08:41 +010024/*
25 * Macro to register list of BL image descriptors,
26 * defined as an array of bl_mem_params_node_t.
27 */
28#define REGISTER_BL_IMAGE_DESCS(_img_desc) \
29 bl_mem_params_node_t *bl_mem_params_desc_ptr = &_img_desc[0]; \
30 unsigned int bl_mem_params_desc_num = ARRAY_SIZE(_img_desc);
31
32/* BL image loading utility functions */
33void flush_bl_params_desc(void);
Sathees Balya90950092018-11-15 14:22:30 +000034void flush_bl_params_desc_args(bl_mem_params_node_t *mem_params_desc_ptr,
35 unsigned int mem_params_desc_num,
36 bl_params_t *next_bl_params_ptr);
Yatharth Kochar3345a8d2016-09-12 16:08:41 +010037int get_bl_params_node_index(unsigned int image_id);
38bl_mem_params_node_t *get_bl_mem_params_node(unsigned int image_id);
39bl_load_info_t *get_bl_load_info_from_mem_params_desc(void);
40bl_params_t *get_next_bl_params_from_mem_params_desc(void);
Soby Mathew96a1c6b2018-01-15 14:45:33 +000041void populate_next_bl_params_config(bl_params_t *bl2_to_next_bl_params);
Yatharth Kochar3345a8d2016-09-12 16:08:41 +010042
Julius Wernera0574842019-05-29 17:01:46 -070043/* Helper to extract BL32/BL33 entry point info from arg0 passed to BL31. */
44void bl31_params_parse_helper(u_register_t param,
45 entry_point_info_t *bl32_ep_info_out,
46 entry_point_info_t *bl33_ep_info_out);
47
Antonio Nino Diaz5eb88372018-11-08 10:20:19 +000048#endif /* DESC_IMAGE_LOAD_H */