Back to home page

Quest Cross Reference

 
 

    


Warning, cross-references for /kernel/include/boot/multiboot.h need to be fixed.

0001 /*                    The Quest Operating System
0002  *  Copyright (C) 2005-2010  Richard West, Boston University
0003  *
0004  *  This program is free software: you can redistribute it and/or modify
0005  *  it under the terms of the GNU General Public License as published by
0006  *  the Free Software Foundation, either version 3 of the License, or
0007  *  (at your option) any later version.
0008  *
0009  *  This program is distributed in the hope that it will be useful,
0010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
0011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0012  *  GNU General Public License for more details.
0013  *
0014  *  You should have received a copy of the GNU General Public License
0015  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
0016  */
0017 
0018 /*
0019  * multiboot.h
0020  *
0021  */
0022 
0023 #ifndef _MULTIBOOT_H_
0024 #define _MULTIBOOT_H_
0025 
0026 #ifndef _ELF_H_
0027 #include "util/elf.h"
0028 #endif
0029 
0030 #include"types.h"
0031 
0032 /* See 'info multiboot': Specification->Boot info format */
0033 /* The memory map. Be careful that the offset 0 is `base_addr_low'
0034         instead of the `size' member. */
0035 typedef struct memory_map
0036 {
0037   uint32 size;
0038   uint32 base_addr_low;
0039   uint32 base_addr_high;
0040   uint32 length_low;
0041   uint32 length_high;
0042   uint32 type;
0043 } memory_map_t;
0044 
0045 typedef struct _multiboot_module
0046 {
0047   Elf32_Ehdr *pe;
0048   void *mod_end;
0049   char *string;
0050   uint32 reserved;
0051 } multiboot_module;
0052 
0053 typedef struct _multiboot_drive
0054 {
0055   uint32 size;
0056   uint8 number;
0057   uint8 mode;
0058   uint16 cylinders;
0059   uint8 heads;
0060   uint8 sectors;
0061   uint16 ports[];
0062 } multiboot_drive;
0063 
0064 typedef struct _multiboot
0065 {
0066   uint32 flags;
0067   uint32 mem_lower;
0068   uint32 mem_upper;
0069   uint32 boot_device;
0070   char *cmdline;
0071   uint32 mods_count;
0072   multiboot_module *mods_addr;
0073   uint32 elf_num;
0074   uint32 elf_size;
0075   void *elf_addr;
0076   void *elf_shndx;
0077   uint32 mmap_length;
0078   uint32 mmap_addr;
0079   uint32 drives_length;
0080   multiboot_drive *drives_addr;
0081   void *config_table;
0082   char *boot_loader_name;
0083 } multiboot;
0084 
0085 #endif
0086 
0087 /* 
0088  * Local Variables:
0089  * indent-tabs-mode: nil
0090  * mode: C
0091  * c-file-style: "gnu"
0092  * c-basic-offset: 2
0093  * End: 
0094  */
0095 
0096 /* vi: set et sw=2 sts=2: */