Boot Table

Describes the boot table.

The boot table consists of a linear array of 4-byte entries whose index positions are defined by the TBootTableEntry enumeration in os/kernelhwsrv/kernel/eka/include/arm/bootdefs.h.

The entries in the array are divided into two groups, one whose index positions are defined by the enumerator names BTF_* and the other group defined by the enumerator names BTP_*.

Entries in the first group specify addresses of Boot Table Functions.

Entries in the second group specify Boot Table MMU Permission and Cache Attribute Definitions to be used for certain standard memory and I/O areas.

A boot table entry is the offset of the function from the beginning of the bootstrap code but, since the bootstrap is linked for a base address of zero and is position independent, bare function addresses can be used.

Use DCD to place a function in the boot table, for example:

DCD function-name

In the Template port, available in os/kernelhwsrv/bsptemplate/asspandvariant/template_variant/bootstrap/template.s, the boot table is defined by the label BootTable, followed by DCD entries for every boot table function, like in the following example:

BootTable
        DCD    DoWriteC        ; output a debug character
        DCD    GetRamBanks    ; get list of RAM banks
        DCD    SetupRamBank    ; set up a RAM bank
        DCD    GetRomBanks    ; get list of ROM banks
        DCD    SetupRomBank    ; set up a ROM bank
        ...