~smartboyhw/wubi/bug-1080090-new

« back to all changes in this revision

Viewing changes to src/grub4dos/docs/.svn/text-base/multiboot.h.svn-base

  • Committer: Howard Chan
  • Date: 2012-11-20 10:16:05 UTC
  • Revision ID: smartboyhw@gmail.com-20121120101605-qfmjfsdynpzg9an9
Added images

Show diffs side-by-side

added added

removed removed

Lines of Context:
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 */