hab_ivt_t Struct Reference

`#include <IVTDataSource.h>`

Collaboration diagram for hab_ivt_t:
[legend]

## Public Attributes

hab_hdr_t | hdr
uint32_t | entry
uint32_t | reserved1
uint32_t | dcd
uint32_t | boot_data
uint32_t | self
uint32_t | csf
uint32_t | reserved2

## Detailed Description

ivt structure

Format

An ivt consists of a hdr followed by a list of addresses as described further below.

Warning
  The entry address may not be NULL.
  On an IC not configured as #HAB_CFG_CLOSED, the csf address may be NULL. If it is not NULL, the csf will be processed, but any failures should be non-fatal.
  On an IC configured as #HAB_CFG_CLOSED, the csf address may not be NULL, and csf failures are typically fatal.

Remarks
  The Boot Data located using the boot_data field is interpreted by the HAB caller in a boot-mode specific manner. This may be used by the boot ROM as to determine the load address and boot device configuration for images loaded from block devices (see ref_rug for details).
  All addresses given in the IVT, including the Boot Data (if present) are those for the final load location.

Initial load addresses

The self field is used to calculate addresses in boot modes where an initial portion of the image is loaded to an initial location. In such cases, the IVT, Boot Data (if present) and DCD (if present) are used in configuring the IC and loading the full image to its final location. Only the IVT, Boot Data (if present) and DCD (if present) are required to be within the initial image portion.

The method for calculating an initial load address for the DCD is illustrated in the following C fragment. Similar calculations apply to other fields.

            hab_ivt_t* ivt_initial = <initial IVT load address>;
            const void* dcd_initial = ivt_initial->dcd;
            if (ivt_initial->dcd != NULL)
                dcd_initial = (const uint8_t*)ivt_initial
                              + (ivt_initial->dcd - ivt_initial->self)

Note
  The void* types in this structure have been changed to uint32_t so that this code will work correctly when compiled on a 64-bit host. Otherwise the structure would come out incorrect.

ivt type

## Member Data Documentation

uint32_t hab_ivt_t::boot_data

Absolute address of the Boot Data: may be NULL, but not interpreted any further by HAB

uint32_t hab_ivt_t::csf

Absolute address of the image CSF.

uint32_t hab_ivt_t::dcd

Absolute address of the image DCD: may be NULL.

uint32_t hab_ivt_t::entry

Absolute address of the first instruction to execute from the image

hab_hdr_t hab_ivt_t::hdr

hdr with tag #HAB_TAG_IVT, length and HAB version fields (see data)

uint32_t hab_ivt_t::reserved1

Reserved in this version of HAB: should be NULL.

uint32_t hab_ivt_t::reserved2

Reserved in this version of HAB: should be zero.

uint32_t hab_ivt_t::self

Absolute address of the IVT.

The documentation for this struct was generated from the following file:

- IVTDataSource.h