Next: , Previous: , Up: OS image format   [Contents][Index]


3.1.5 The address tag of Multiboot2 header

        +-------------------+
u16     | type = 2          |
u16     | flags             |
u32     | size              |
u32     | header_addr       |
u32     | load_addr         |
u32     | load_end_addr     |
u32     | bss_end_addr      |
        +-------------------+

All of the address fields in this tag are physical addresses. The meaning of each is as follows:

header_addr

Contains the address corresponding to the beginning of the Multiboot2 header — the physical memory location at which the magic value is supposed to be loaded. This field serves to synchronize the mapping between OS image offsets and physical memory addresses.

load_addr

Contains the physical address of the beginning of the text segment. The offset in the OS image file at which to start loading is defined by the offset at which the header was found, minus (header_addr - load_addr). load_addr must be less than or equal to header_addr.

Special value -1 means that the file must be loaded from its beginning.

load_end_addr

Contains the physical address of the end of the data segment. (load_end_addr - load_addr) specifies how much data to load. This implies that the text and data segments must be consecutive in the OS image; this is true for existing a.out executable formats. If this field is zero, the boot loader assumes that the text and data segments occupy the whole OS image file.

bss_end_addr

Contains the physical address of the end of the bss segment. The boot loader initializes this area to zero, and reserves the memory it occupies to avoid placing boot modules and other data relevant to the operating system in that area. If this field is zero, the boot loader assumes that no bss segment is present.

Note: This information does not need to be provided if the kernel image is in ELF format, but it must be provided if the image is in a.out format or in some other format. When the address tag is present it must be used in order to load the image, regardless of whether an ELF header is also present. Compliant boot loaders must be able to load images that are either in ELF format or contain the address tag embedded in the Multiboot2 header.

3.1.6 The entry address tag of Multiboot2 header

        +-------------------+
u16     | type = 3          |
u16     | flags             |
u32     | size              |
u32     | entry_addr        |
        +-------------------+

All of the address fields in this tag are physical addresses. The meaning of each is as follows:

entry_addr

The physical address to which the boot loader should jump in order to start running the operating system.

3.1.7 EFI i386 entry address tag of Multiboot2 header

        +-------------------+
u16     | type = 8          |
u16     | flags             |
u32     | size              |
u32     | entry_addr        |
        +-------------------+

All of the address fields in this tag are physical addresses. The meaning of each is as follows:

entry_addr

The physical address to which the boot loader should jump in order to start running EFI i386 compatible operating system code.

This tag is taken into account only on EFI i386 platforms when Multiboot2 image header contains EFI boot services tag. Then entry point specified in ELF header and the entry address tag of Multiboot2 header are ignored.

3.1.8 EFI amd64 entry address tag of Multiboot2 header

        +-------------------+
u16     | type = 9          |
u16     | flags             |
u32     | size              |
u32     | entry_addr        |
        +-------------------+

All of the address fields in this tag are physical addresses (paging mode is enabled and any memory space defined by the UEFI memory map is identity mapped, hence, virtual address equals physical address; Unified Extensible Firmware Interface Specification, Version 2.6, section 2.3.4, x64 Platforms, boot services). The meaning of each is as follows:

entry_addr

The physical address to which the boot loader should jump in order to start running EFI amd64 compatible operating system code.

This tag is taken into account only on EFI amd64 platforms when Multiboot2 image header contains EFI boot services tag. Then entry point specified in ELF header and the entry address tag of Multiboot2 header are ignored.


Next: , Previous: , Up: OS image format   [Contents][Index]