Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add 32-bit variants for XFERLIST_SRAM_LAYOUT and XFERLIST_EP_INFO #54

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 88 additions & 3 deletions source/transfer_list.rst
Original file line number Diff line number Diff line change
Expand Up @@ -917,6 +917,8 @@ initialize itself.
- hdr_size
- Holds a SPMC manifest image in DT format.

.. _64_bit_ep_info:

**AArch64 executable entry point information (XFERLIST_EXEC_EP_INFO64)**

This entry type holds the AArch64 variant of `entry_point_info`.
Expand Down Expand Up @@ -1004,6 +1006,8 @@ hand-over execution.
- hdr_size
- Holds the FF-A SP binary.

.. _64_bit_mem_layout:

**Read-Write Memory Layout Entry Layout (XFERLIST_RW_MEM_LAYOUT64)**

This entry type holds a structure that describes the layout of a read-write
Expand Down Expand Up @@ -1088,14 +1092,13 @@ It may also contain some information to the SP itself.
- hdr_size
- Holds a FF-A manifest image in DT format.

Mbed-TLS heap information (XFERLIST_MBEDTLS_HEAP_INFO)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Mbed-TLS heap information (XFERLIST_MBEDTLS_HEAP_INFO)**

Specifies the location and size of a memory region, carved out for
stack-based memory allocation in Mbed-TLS. The buffer address and size are
passed to later stages for intialisation of Mbed-TLS.

.. _tab_tpm_crb_base:
.. _mbed_tls_heap_info:
.. list-table:: Mbed-TLS heap info type layout
:widths: 4 2 4 8
:header-rows: 1
Expand Down Expand Up @@ -1130,5 +1133,87 @@ passed to later stages for intialisation of Mbed-TLS.
- hdr_size + 0x8
- Size of memory region.

**AArch32 executable entry point information (XFERLIST_EXEC_EP_INFO32)**

This entry type holds the 32-bit variant of the `entry_point_info`
structure. `entry_point_info` is a TF-A-specific data structure [TF_BL31]_ used
to represent the execution state of an image; that is, the state of general
purpose registers, PC, and SPSR.

This information is used by clients to setup the execution environment of
subsequent images. It's usage is identical to the 64-bit form represented by
:ref:`XFERLIST_EXEC_EP_INFO64<64_bit_ep_info>`.

.. _tab_entry_point_info32:
.. list-table:: Entry point info type layout (32-bit variant)
:widths: 2 5 2 6

* - Field
- Size (bytes)
- Offset (bytes)
- Description

* - tag_id
- 0x3
- 0x0
- The tag_id field must be set to **0x106**.

* - hdr_size
- 0x1
- 0x3
- |hdr_size_desc|

* - data_size
- 0x4
- 0x4
- Size of the `entry_point_info` structure in bytes.

* - ep_info
- `sizeof(entry_point_info)`
- hdr_size
- Holds a single `entry_point_info` structure.
Copy link
Contributor

@sjg20 sjg20 Jan 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This structure should be defined here, so please copy over the info from wherever it is kept.


**Read-Write Memory Layout Entry Layout (XFERLIST_RW_MEM_LAYOUT32)**

This entry type holds the 32-bit variant of
:ref:`XFERLIST_RW_MEM_LAYOUT64<64_bit_mem_layout>`. It is a structure used to
describe the layout of a read-write memory region. TF-A utilizes this entry type
to notify BL2 of the available memory for read-write operations. Note, for other
memory types, such as read-only memory, distinct entries should be created.

.. _tab_rw_mem_layout32:
.. list-table:: Layout for a RW memory layout entry (32-bit variant)
:widths: 2 5 5 6

* - Field
- Size (bytes)
- Offset (bytes)
- Description

* - tag_id
- 0x3
- 0x0
- The tag_id field must be set to **0x107**.

* - hdr_size
- 0x1
- 0x3
- |hdr_size_desc|

* - data_size
- 0x4
- 0x4
- The size of the layout in bytes.

* - addr
- 0x4
- hdr_size
- The 32-bit base address of the memory region.

* - size
- 0x4
- hdr_size + 0x4
- The size of the memory region.

.. |hdr_size_desc| replace:: The size of this entry header in bytes must be set to **8**.
.. |current_version| replace:: `0x1`
Loading