You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
3.0 KiB
127 lines
3.0 KiB
/* Copyright (C) 1999, 2001 Free Software Foundation, Inc. |
|
|
|
This program is free software; you can redistribute it and/or modify |
|
it under the terms of the GNU General Public License as published by |
|
the Free Software Foundation; either version 2 of the License, or |
|
(at your option) any later version. |
|
|
|
This program is distributed in the hope that it will be useful, |
|
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
GNU General Public License for more details. |
|
|
|
You should have received a copy of the GNU General Public License |
|
along with this program; if not, write to the Free Software |
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ |
|
|
|
#ifndef __MULTIBOOT_H__ |
|
#define __MULTIBOOT_H__ |
|
|
|
/* |
|
* Multiboot header structure. |
|
*/ |
|
#define MULTIBOOT_HEADER_MAGIC 0x1BADB002 |
|
#define MULTIBOOT_HEADER_MODS_ALIGNED 0x00000001 |
|
#define MULTIBOOT_HEADER_WANT_MEMORY 0x00000002 |
|
#define MULTIBOOT_HEADER_HAS_VBE 0x00000004 |
|
#define MULTIBOOT_HEADER_HAS_ADDR 0x00010000 |
|
|
|
/* The magic number passed by a Multiboot-compliant boot loader. */ |
|
#define MULTIBOOT_BOOTLOADER_MAGIC 0x2BADB002 |
|
|
|
#define MBI_MEMLIMITS (1u<< 0) |
|
#define MBI_BOOTDEV (1u<< 1) |
|
#define MBI_CMDLINE (1u<< 2) |
|
#define MBI_MODULES (1u<< 3) |
|
#define MBI_AOUT_SYMS (1u<< 4) |
|
#define MBI_ELF_SYMS (1u<< 5) |
|
#define MBI_MEMMAP (1u<< 6) |
|
#define MBI_DRIVES (1u<< 7) |
|
#define MBI_BIOSCONFIG (1u<< 8) |
|
#define MBI_LOADERNAME (1u<< 9) |
|
#define MBI_APM (1u<<10) |
|
|
|
#ifndef __ASSEMBLY__ |
|
|
|
/* The symbol table for a.out. */ |
|
typedef struct { |
|
u32 tabsize; |
|
u32 strsize; |
|
u32 addr; |
|
u32 reserved; |
|
} aout_symbol_table_t; |
|
|
|
/* The section header table for ELF. */ |
|
typedef struct { |
|
u32 num; |
|
u32 size; |
|
u32 addr; |
|
u32 shndx; |
|
} elf_section_header_table_t; |
|
|
|
/* The Multiboot information. */ |
|
typedef struct { |
|
u32 flags; |
|
|
|
/* Valid if flags sets MBI_MEMLIMITS */ |
|
u32 mem_lower; |
|
u32 mem_upper; |
|
|
|
/* Valid if flags sets MBI_BOOTDEV */ |
|
u32 boot_device; |
|
|
|
/* Valid if flags sets MBI_CMDLINE */ |
|
u32 cmdline; |
|
|
|
/* Valid if flags sets MBI_MODULES */ |
|
u32 mods_count; |
|
u32 mods_addr; |
|
|
|
/* Valid if flags sets ... */ |
|
union { |
|
aout_symbol_table_t aout_sym; /* ... MBI_AOUT_SYMS */ |
|
elf_section_header_table_t elf_sec; /* ... MBI_ELF_SYMS */ |
|
} u; |
|
|
|
/* Valid if flags sets MBI_MEMMAP */ |
|
u32 mmap_length; |
|
u32 mmap_addr; |
|
|
|
/* Valid if flags sets MBI_DRIVES */ |
|
u32 drives_length; |
|
u32 drives_addr; |
|
|
|
/* Valid if flags sets MBI_BIOSCONFIG */ |
|
u32 config_table; |
|
|
|
/* Valid if flags sets MBI_LOADERNAME */ |
|
u32 boot_loader_name; |
|
|
|
/* Valid if flags sets MBI_APM */ |
|
u32 apm_table; |
|
} multiboot_info_t; |
|
|
|
/* The module structure. */ |
|
typedef struct { |
|
u32 mod_start; |
|
u32 mod_end; |
|
u32 string; |
|
u32 reserved; |
|
} module_t; |
|
|
|
/* The memory map. Be careful that the offset 0 is base_addr_low |
|
but no size. */ |
|
typedef struct { |
|
u32 size; |
|
u32 base_addr_low; |
|
u32 base_addr_high; |
|
u32 length_low; |
|
u32 length_high; |
|
u32 type; |
|
} memory_map_t; |
|
|
|
|
|
#endif /* __ASSEMBLY__ */ |
|
|
|
|
|
#endif /* _BOOTSTUB_MB_H */
|
|
|