|
|
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.