|
|
1.1 ! root 1: /* multiboot.h ! 2: * tag: header for multiboot ! 3: * ! 4: * Copyright (C) 2003-2004 Stefan Reinauer ! 5: * ! 6: * See the file "COPYING" for further information about ! 7: * the copyright and warranty status of this work. ! 8: */ ! 9: ! 10: /* magic number for multiboot header */ ! 11: #define MULTIBOOT_HEADER_MAGIC 0x1BADB002 ! 12: ! 13: /* flags for multiboot header */ ! 14: #define MULTIBOOT_HEADER_FLAGS 0x00010003 ! 15: ! 16: /* magic number passed by multiboot-compliant boot loader. */ ! 17: #define MULTIBOOT_BOOTLOADER_MAGIC 0x2BADB002 ! 18: ! 19: /* The size of our stack (8KB). */ ! 20: #define STACK_SIZE 0x2000 ! 21: ! 22: /* C symbol format. HAVE_ASM_USCORE is defined by configure. */ ! 23: #ifdef HAVE_ASM_USCORE ! 24: # define EXT_C(sym) _ ## sym ! 25: #else ! 26: # define EXT_C(sym) sym ! 27: #endif ! 28: ! 29: #ifndef ASM ! 30: /* We don't want these declarations in boot.S */ ! 31: ! 32: /* multiboot header */ ! 33: typedef struct multiboot_header { ! 34: unsigned long magic; ! 35: unsigned long flags; ! 36: unsigned long checksum; ! 37: unsigned long header_addr; ! 38: unsigned long load_addr; ! 39: unsigned long load_end_addr; ! 40: unsigned long bss_end_addr; ! 41: unsigned long entry_addr; ! 42: } multiboot_header_t; ! 43: ! 44: /* symbol table for a.out */ ! 45: typedef struct aout_symbol_table { ! 46: unsigned long tabsize; ! 47: unsigned long strsize; ! 48: unsigned long addr; ! 49: unsigned long reserved; ! 50: } aout_symbol_table_t; ! 51: ! 52: /* section header table for ELF */ ! 53: typedef struct elf_section_header_table { ! 54: unsigned long num; ! 55: unsigned long size; ! 56: unsigned long addr; ! 57: unsigned long shndx; ! 58: } elf_section_header_table_t; ! 59: ! 60: /* multiboot information */ ! 61: typedef struct multiboot_info { ! 62: unsigned long flags; ! 63: unsigned long mem_lower; ! 64: unsigned long mem_upper; ! 65: unsigned long boot_device; ! 66: unsigned long cmdline; ! 67: unsigned long mods_count; ! 68: unsigned long mods_addr; ! 69: union { ! 70: aout_symbol_table_t aout_sym; ! 71: elf_section_header_table_t elf_sec; ! 72: } u; ! 73: unsigned long mmap_length; ! 74: unsigned long mmap_addr; ! 75: } multiboot_info_t; ! 76: ! 77: /* module structure */ ! 78: typedef struct module { ! 79: unsigned long mod_start; ! 80: unsigned long mod_end; ! 81: unsigned long string; ! 82: unsigned long reserved; ! 83: } module_t; ! 84: ! 85: /* memory map. Be careful that the offset 0 is base_addr_low ! 86: but no size. */ ! 87: typedef struct memory_map { ! 88: unsigned long size; ! 89: unsigned long base_addr_low; ! 90: unsigned long base_addr_high; ! 91: unsigned long length_low; ! 92: unsigned long length_high; ! 93: unsigned long type; ! 94: } memory_map_t; ! 95: ! 96: #endif /* ! ASM */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.