mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-19 02:54:24 +00:00
docs: add documentation for entry_point_info
Change-Id: I20b5f2cf70bfff09126f3c0645f40d3e410a4c70 Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
This commit is contained in:
parent
eff1da2aa3
commit
2839a3c405
1 changed files with 38 additions and 5 deletions
|
@ -645,6 +645,35 @@ on entry, these should be enabled during ``bl31_plat_arch_setup()``.
|
|||
Data structures used in the BL31 cold boot interface
|
||||
''''''''''''''''''''''''''''''''''''''''''''''''''''
|
||||
|
||||
In the cold boot flow, ``entry_point_info`` is used to represent the execution
|
||||
state of an image; that is, the state of general purpose registers, PC, and
|
||||
SPSR.
|
||||
|
||||
There are two variants of this structure, for AArch64:
|
||||
|
||||
.. code:: c
|
||||
|
||||
typedef struct entry_point_info {
|
||||
param_header_t h;
|
||||
uintptr_t pc;
|
||||
uint32_t spsr;
|
||||
|
||||
aapcs64_params_t args;
|
||||
}
|
||||
|
||||
and, AArch32:
|
||||
|
||||
.. code:: c
|
||||
|
||||
typedef struct entry_point_info {
|
||||
param_header_t h;
|
||||
uintptr_t pc;
|
||||
uint32_t spsr;
|
||||
|
||||
uintptr_t lr_svc;
|
||||
aapcs32_params_t args;
|
||||
} entry_point_info_t;
|
||||
|
||||
These structures are designed to support compatibility and independent
|
||||
evolution of the structures and the firmware images. For example, a version of
|
||||
BL31 that can interpret the BL3x image information from different versions of
|
||||
|
@ -662,13 +691,17 @@ BL31 to detect which information is present and respond appropriately. The
|
|||
uint8_t type; /* type of the structure */
|
||||
uint8_t version; /* version of this structure */
|
||||
uint16_t size; /* size of this structure in bytes */
|
||||
uint32_t attr; /* attributes: unused bits SBZ */
|
||||
uint32_t attr; /* attributes */
|
||||
} param_header_t;
|
||||
|
||||
The structures using this format are ``entry_point_info``, ``image_info`` and
|
||||
``bl31_params``. The code that allocates and populates these structures must set
|
||||
the header fields appropriately, and the ``SET_PARAM_HEAD()`` a macro is defined
|
||||
to simplify this action.
|
||||
In `entry_point_info`, Bits 0 and 5 of ``attr`` field are used to encode the
|
||||
security state; in other words, whether the image is to be executed in Secure,
|
||||
Non-Secure, or Realm mode.
|
||||
|
||||
Other structures using this format are ``image_info`` and ``bl31_params``. The
|
||||
code that allocates and populates these structures must set the header fields
|
||||
appropriately, the ``SET_PARAM_HEAD()`` macro is defined to simplify this
|
||||
action.
|
||||
|
||||
Required CPU state for BL31 Warm boot initialization
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
Loading…
Add table
Reference in a new issue