Annotation of qemu/roms/ipxe/src/arch/i386/include/multiboot.h, revision 1.1.1.1

1.1       root        1: #ifndef _MULTIBOOT_H
                      2: #define _MULTIBOOT_H
                      3: 
                      4: /**
                      5:  * @file
                      6:  *
                      7:  * Multiboot operating systems
                      8:  *
                      9:  */
                     10: 
                     11: FILE_LICENCE ( GPL2_OR_LATER );
                     12: 
                     13: #include <stdint.h>
                     14: 
                     15: /** The magic number for the Multiboot header */
                     16: #define MULTIBOOT_HEADER_MAGIC 0x1BADB002
                     17: 
                     18: /** Boot modules must be page aligned */
                     19: #define MB_FLAG_PGALIGN 0x00000001
                     20: 
                     21: /** Memory map must be provided */
                     22: #define MB_FLAG_MEMMAP 0x00000002
                     23: 
                     24: /** Video mode information must be provided */
                     25: #define MB_FLAG_VIDMODE 0x00000004
                     26: 
                     27: /** Image is a raw multiboot image (not ELF) */
                     28: #define MB_FLAG_RAW 0x00010000
                     29: 
                     30: /**
                     31:  * The magic number passed by a Multiboot-compliant boot loader
                     32:  *
                     33:  * Must be passed in register %eax when jumping to the Multiboot OS
                     34:  * image.
                     35:  */
                     36: #define MULTIBOOT_BOOTLOADER_MAGIC 0x2BADB002
                     37: 
                     38: /** Multiboot information structure mem_* fields are valid */
                     39: #define MBI_FLAG_MEM 0x00000001
                     40: 
                     41: /** Multiboot information structure boot_device field is valid */
                     42: #define MBI_FLAG_BOOTDEV 0x00000002
                     43: 
                     44: /** Multiboot information structure cmdline field is valid */
                     45: #define MBI_FLAG_CMDLINE 0x00000004
                     46: 
                     47: /** Multiboot information structure module fields are valid */
                     48: #define MBI_FLAG_MODS 0x00000008
                     49: 
                     50: /** Multiboot information structure a.out symbol table is valid */
                     51: #define MBI_FLAG_AOUT 0x00000010
                     52: 
                     53: /** Multiboot information struture ELF section header table is valid */
                     54: #define MBI_FLAG_ELF 0x00000020
                     55: 
                     56: /** Multiboot information structure memory map is valid */
                     57: #define MBI_FLAG_MMAP 0x00000040
                     58: 
                     59: /** Multiboot information structure drive list is valid */
                     60: #define MBI_FLAG_DRIVES 0x00000080
                     61: 
                     62: /** Multiboot information structure ROM configuration field is valid */
                     63: #define MBI_FLAG_CFGTBL 0x00000100
                     64: 
                     65: /** Multiboot information structure boot loader name field is valid */
                     66: #define MBI_FLAG_LOADER 0x00000200
                     67: 
                     68: /** Multiboot information structure APM table is valid */
                     69: #define MBI_FLAG_APM 0x00000400
                     70: 
                     71: /** Multiboot information structure video information is valid */
                     72: #define MBI_FLAG_VBE 0x00000800
                     73: 
                     74: /** A multiboot header */
                     75: struct multiboot_header {
                     76:        uint32_t magic;
                     77:        uint32_t flags;
                     78:        uint32_t checksum;
                     79:        uint32_t header_addr;
                     80:        uint32_t load_addr;
                     81:        uint32_t load_end_addr;
                     82:        uint32_t bss_end_addr;
                     83:        uint32_t entry_addr;
                     84: } __attribute__ (( packed, may_alias ));
                     85: 
                     86: /** A multiboot a.out symbol table */
                     87: struct multiboot_aout_symbol_table {
                     88:        uint32_t tabsize;
                     89:        uint32_t strsize;
                     90:        uint32_t addr;
                     91:        uint32_t reserved;
                     92: } __attribute__ (( packed, may_alias ));
                     93: 
                     94: /** A multiboot ELF section header table */
                     95: struct multiboot_elf_section_header_table {
                     96:        uint32_t num;
                     97:        uint32_t size;
                     98:        uint32_t addr;
                     99:        uint32_t shndx;
                    100: } __attribute__ (( packed, may_alias ));
                    101: 
                    102: /** A multiboot information structure */
                    103: struct multiboot_info {
                    104:        uint32_t flags;
                    105:        uint32_t mem_lower;
                    106:        uint32_t mem_upper;
                    107:        uint32_t boot_device;
                    108:        uint32_t cmdline;
                    109:        uint32_t mods_count;
                    110:        uint32_t mods_addr;
                    111:        union {
                    112:                struct multiboot_aout_symbol_table aout_syms;
                    113:                struct multiboot_elf_section_header_table elf_sections;
                    114:        } syms;
                    115:        uint32_t mmap_length;
                    116:        uint32_t mmap_addr;
                    117:        uint32_t drives_length;
                    118:        uint32_t drives_addr;
                    119:        uint32_t config_table;
                    120:        uint32_t boot_loader_name;
                    121:        uint32_t apm_table;
                    122:        uint32_t vbe_control_info;
                    123:        uint32_t vbe_mode_info;
                    124:        uint16_t vbe_mode;
                    125:        uint16_t vbe_interface_seg;
                    126:        uint16_t vbe_interface_off;
                    127:        uint16_t vbe_interface_len;
                    128: } __attribute__ (( packed, may_alias ));
                    129: 
                    130: /** A multiboot module structure */
                    131: struct multiboot_module {
                    132:        uint32_t mod_start;
                    133:        uint32_t mod_end;
                    134:        uint32_t string;
                    135:        uint32_t reserved;
                    136: } __attribute__ (( packed, may_alias ));
                    137: 
                    138: /** A multiboot memory map entry */
                    139: struct multiboot_memory_map {
                    140:        uint32_t size;
                    141:        uint64_t base_addr;
                    142:        uint64_t length;
                    143:        uint32_t type;
                    144: } __attribute__ (( packed, may_alias ));
                    145: 
                    146: /** Usable RAM */
                    147: #define MBMEM_RAM 1
                    148: 
                    149: #endif /* _MULTIBOOT_H */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.