1 /* 2 * 3 * Copyright (C) 2008 Advanced Micro Devices, Inc. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 3. The name of the author may not be used to endorse or promote products 14 * derived from this software without specific prior written permission. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26 * SUCH DAMAGE. 27 */ 28 29 #ifndef MULTIBOOT_TABLES_H_ 30 #define MULTIBOOT_TABLES_H_ 31 32 #include <arch/types.h> 33 34 #define MULTIBOOT_MAGIC 0x2BADB002UL 35 #define MULTIBOOT_FLAGS_MMAP (1 << 6) 36 #define MULTIBOOT_FLAGS_CMDLINE (1 << 2) 37 #define MULTIBOOT_FLAGS_MEMINFO (1 << 0) 38 struct multiboot_header { 39 u32 flags; 40 u32 mem_lower; 41 u32 mem_higher; 42 u32 boot_device; 43 u32 cmdline; 44 u32 mods_count; 45 u32 mods_addr; 46 47 u32 syms[4]; 48 49 u32 mmap_length; 50 u32 mmap_addr; 51 52 u32 drives_length; 53 u32 drives_addr; 54 55 u32 config_table; 56 57 u32 boot_loader_name; 58 59 u32 apm_table; 60 61 u32 vbe_control_info; 62 u32 vbe_mode_info; 63 u32 vbe_mode; 64 u32 vbe_interface_seg; 65 u32 vbe_interface_off; 66 u32 vbe_interface_len; 67 }; 68 69 struct multiboot_mmap { 70 u32 size; 71 u64 addr; 72 u64 length; 73 u32 type; 74 } __attribute((packed)); 75 76 #endif 77