Browse Source

Downloaded from current grub CVS.

tags/v0.9.3
Michael Brown 17 years ago
parent
commit
143e3b84a4
1 changed files with 119 additions and 0 deletions
  1. 119
    0
      src/arch/i386/include/multiboot.h

+ 119
- 0
src/arch/i386/include/multiboot.h View File

@@ -0,0 +1,119 @@
1
+/* multiboot.h - the header for Multiboot */
2
+/* Copyright (C) 1999, 2001  Free Software Foundation, Inc.
3
+   
4
+   This program is free software; you can redistribute it and/or modify
5
+   it under the terms of the GNU General Public License as published by
6
+   the Free Software Foundation; either version 2 of the License, or
7
+   (at your option) any later version.
8
+   
9
+   This program is distributed in the hope that it will be useful,
10
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
+   GNU General Public License for more details.
13
+   
14
+   You should have received a copy of the GNU General Public License
15
+   along with this program; if not, write to the Free Software
16
+   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
17
+
18
+/* Macros.  */
19
+
20
+/* The magic number for the Multiboot header.  */
21
+#define MULTIBOOT_HEADER_MAGIC		0x1BADB002
22
+
23
+/* The flags for the Multiboot header.  */
24
+#ifdef __ELF__
25
+# define MULTIBOOT_HEADER_FLAGS		0x00000003
26
+#else
27
+# define MULTIBOOT_HEADER_FLAGS		0x00010003
28
+#endif
29
+
30
+/* The magic number passed by a Multiboot-compliant boot loader.  */
31
+#define MULTIBOOT_BOOTLOADER_MAGIC	0x2BADB002
32
+
33
+/* The size of our stack (16KB).  */
34
+#define STACK_SIZE			0x4000
35
+
36
+/* C symbol format. HAVE_ASM_USCORE is defined by configure.  */
37
+#ifdef HAVE_ASM_USCORE
38
+# define EXT_C(sym)			_ ## sym
39
+#else
40
+# define EXT_C(sym)			sym
41
+#endif
42
+
43
+#ifndef ASM
44
+/* Do not include here in boot.S.  */
45
+
46
+/* Types.  */
47
+
48
+/* The Multiboot header.  */
49
+typedef struct multiboot_header
50
+{
51
+  unsigned long magic;
52
+  unsigned long flags;
53
+  unsigned long checksum;
54
+  unsigned long header_addr;
55
+  unsigned long load_addr;
56
+  unsigned long load_end_addr;
57
+  unsigned long bss_end_addr;
58
+  unsigned long entry_addr;
59
+} multiboot_header_t;
60
+
61
+/* The symbol table for a.out.  */
62
+typedef struct aout_symbol_table
63
+{
64
+  unsigned long tabsize;
65
+  unsigned long strsize;
66
+  unsigned long addr;
67
+  unsigned long reserved;
68
+} aout_symbol_table_t;
69
+
70
+/* The section header table for ELF.  */
71
+typedef struct elf_section_header_table
72
+{
73
+  unsigned long num;
74
+  unsigned long size;
75
+  unsigned long addr;
76
+  unsigned long shndx;
77
+} elf_section_header_table_t;
78
+
79
+/* The Multiboot information.  */
80
+typedef struct multiboot_info
81
+{
82
+  unsigned long flags;
83
+  unsigned long mem_lower;
84
+  unsigned long mem_upper;
85
+  unsigned long boot_device;
86
+  unsigned long cmdline;
87
+  unsigned long mods_count;
88
+  unsigned long mods_addr;
89
+  union
90
+  {
91
+    aout_symbol_table_t aout_sym;
92
+    elf_section_header_table_t elf_sec;
93
+  } u;
94
+  unsigned long mmap_length;
95
+  unsigned long mmap_addr;
96
+} multiboot_info_t;
97
+
98
+/* The module structure.  */
99
+typedef struct module
100
+{
101
+  unsigned long mod_start;
102
+  unsigned long mod_end;
103
+  unsigned long string;
104
+  unsigned long reserved;
105
+} module_t;
106
+
107
+/* The memory map. Be careful that the offset 0 is base_addr_low
108
+   but no size.  */
109
+typedef struct memory_map
110
+{
111
+  unsigned long size;
112
+  unsigned long base_addr_low;
113
+  unsigned long base_addr_high;
114
+  unsigned long length_low;
115
+  unsigned long length_high;
116
+  unsigned long type;
117
+} memory_map_t;
118
+
119
+#endif /* ! ASM */

Loading…
Cancel
Save