blob: 2cc7c54b2fc59bc0f3b37229201b0a94fbaadd95 [file] [log] [blame]
Julius Werner2a231e32019-05-28 21:03:58 -07001/*
2 * Copyright (c) 2019, ARM Limited and Contributors. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#ifndef ARM_TRUSTED_FIRMWARE_EXPORT_COMMON_BL_COMMON_EXP_H
8#define ARM_TRUSTED_FIRMWARE_EXPORT_COMMON_BL_COMMON_EXP_H
9
10/* EXPORT HEADER -- See include/export/README for details! -- EXPORT HEADER */
11
12#include "ep_info_exp.h"
13#include "tbbr/tbbr_img_def_exp.h"
14
15/*
16 * The following are used for image state attributes.
17 * Image can only be in one of the following state.
18 */
19#define IMAGE_STATE_RESET U(0)
20#define IMAGE_STATE_COPIED U(1)
21#define IMAGE_STATE_COPYING U(2)
22#define IMAGE_STATE_AUTHENTICATED U(3)
23#define IMAGE_STATE_EXECUTED U(4)
24#define IMAGE_STATE_INTERRUPTED U(5)
25
26#define IMAGE_ATTRIB_SKIP_LOADING U(0x02)
27#define IMAGE_ATTRIB_PLAT_SETUP U(0x04)
28
29#define INVALID_IMAGE_ID U(0xFFFFFFFF)
30
31#ifndef __ASSEMBLER__
32
33/*****************************************************************************
34 * Image info binary provides information from the image loader that
35 * can be used by the firmware to manage available trusted RAM.
36 * More advanced firmware image formats can provide additional
37 * information that enables optimization or greater flexibility in the
38 * common firmware code
39 *****************************************************************************/
40typedef struct image_info {
41 param_header_t h;
Jorge Troncosoedb18d72022-09-12 15:12:01 -070042 uintptr_t image_base; /* physical address of base of image */
43 uint32_t image_size; /* bytes read from image file */
Julius Werner2a231e32019-05-28 21:03:58 -070044 uint32_t image_max_size;
45} image_info_t;
46
47/* BL image node in the BL image execution sequence */
48typedef struct bl_params_node {
49 unsigned int image_id;
50 image_info_t *image_info;
51 entry_point_info_t *ep_info;
52 struct bl_params_node *next_params_info;
53} bl_params_node_t;
54
55/*
56 * BL image head node in the BL image execution sequence
57 * It is also used to pass information to next BL image.
58 */
59typedef struct bl_params {
60 param_header_t h;
61 bl_params_node_t *head;
62} bl_params_t;
63
64/*****************************************************************************
65 * The image descriptor struct definition.
66 *****************************************************************************/
67typedef struct image_desc {
68 /* Contains unique image id for the image. */
69 unsigned int image_id;
70 /*
71 * This member contains Image state information.
72 * Refer IMAGE_STATE_XXX defined above.
73 */
74 unsigned int state;
75 uint32_t copied_size; /* image size copied in blocks */
76 image_info_t image_info;
77 entry_point_info_t ep_info;
78} image_desc_t;
79
80/* BL image node in the BL image loading sequence */
81typedef struct bl_load_info_node {
82 unsigned int image_id;
83 image_info_t *image_info;
84 struct bl_load_info_node *next_load_info;
85} bl_load_info_node_t;
86
87/* BL image head node in the BL image loading sequence */
88typedef struct bl_load_info {
89 param_header_t h;
90 bl_load_info_node_t *head;
91} bl_load_info_t;
92
93#endif /* __ASSEMBLER__ */
94
95#endif /* ARM_TRUSTED_FIRMWARE_EXPORT_COMMON_BL_COMMON_EXP_H */