SimpleOS

LXR

Navigation



Site hébergé par : enix

The LXR Cross Referencer for SOS

source navigation ]
diff markup ]
identifier search ]
general search ]
 
 
Article:1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 6.5 ] [ 7 ] [ 7.5 ] [ 8 ] [ 9 ] [ 9.5 ]

Diff markup

Differences between /bootstrap/multiboot.h (Article 4) and /bootstrap/multiboot.h (Article 8)


001 #ifndef __MULTIBOOT_H__                           001 #ifndef __MULTIBOOT_H__
002 #define __MULTIBOOT_H__                           002 #define __MULTIBOOT_H__
003                                                   003 
004 /* multiboot.h - the header for Multiboot */      004 /* multiboot.h - the header for Multiboot */
005 /* Copyright (C) 1999  Free Software Foundatio    005 /* Copyright (C) 1999  Free Software Foundation, Inc.
006                                                   006    
007    This program is free software; you can redi    007    This program is free software; you can redistribute it and/or modify
008    it under the terms of the GNU General Publi    008    it under the terms of the GNU General Public License as published by
009    the Free Software Foundation; either versio    009    the Free Software Foundation; either version 2 of the License, or
010    (at your option) any later version.            010    (at your option) any later version.
011                                                   011    
012    This program is distributed in the hope tha    012    This program is distributed in the hope that it will be useful,
013    but WITHOUT ANY WARRANTY; without even the     013    but WITHOUT ANY WARRANTY; without even the implied warranty of
014    MERCHANTABILITY or FITNESS FOR A PARTICULAR    014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
015    GNU General Public License for more details    015    GNU General Public License for more details.
016                                                   016    
017    You should have received a copy of the GNU     017    You should have received a copy of the GNU General Public License
018    along with this program; if not, write to t    018    along with this program; if not, write to the Free Software
019    Foundation, Inc., 675 Mass Ave, Cambridge,     019    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
020                                                   020 
021 /* Macros.  */                                    021 /* Macros.  */
022                                                   022 
023 /* The magic number for the Multiboot header.     023 /* The magic number for the Multiboot header.  */
024 #define MULTIBOOT_HEADER_MAGIC          0x1BAD    024 #define MULTIBOOT_HEADER_MAGIC          0x1BADB002
025                                                   025 
026 /* The flags for the Multiboot header.  */        026 /* The flags for the Multiboot header.  */
027 #define MULTIBOOT_HEADER_FLAGS          0x0001    027 #define MULTIBOOT_HEADER_FLAGS          0x00010003
028                                                   028 
029 /* The magic number passed by a Multiboot-comp    029 /* The magic number passed by a Multiboot-compliant boot loader.  */
030 #define MULTIBOOT_BOOTLOADER_MAGIC      0x2BAD    030 #define MULTIBOOT_BOOTLOADER_MAGIC      0x2BADB002
031                                                   031 
032 /* The size of our stack (16KB).  */              032 /* The size of our stack (16KB).  */
033 #define MULTIBOOT_STACK_SIZE            0x4000    033 #define MULTIBOOT_STACK_SIZE            0x4000
034                                                   034 
035 #define MULTIBOOT_CMDLINE 4                       035 #define MULTIBOOT_CMDLINE 4
036 #define MULTIBOOT_MODS 8                          036 #define MULTIBOOT_MODS 8
037                                                   037 
038 /* C symbol format. HAVE_ASM_USCORE is defined    038 /* C symbol format. HAVE_ASM_USCORE is defined by configure.  */
039 #ifdef HAVE_ASM_USCORE                            039 #ifdef HAVE_ASM_USCORE
040 # define EXT_C(sym)                     _ ## s    040 # define EXT_C(sym)                     _ ## sym
041 #else                                             041 #else
042 # define EXT_C(sym)                     sym       042 # define EXT_C(sym)                     sym
043 #endif                                            043 #endif
044                                                   044 
045 #ifndef ASM                                       045 #ifndef ASM
046 /* Do not include here in boot.S.  */          !! 046 /* Do not include here in the assembler sources.  */
047                                                   047 
                                                   >> 048 #include <sos/types.h>
                                                   >> 049 
                                                   >> 050 
                                                   >> 051 /* The address of the stack of the bootstrap thread */
                                                   >> 052 extern sos_vaddr_t bootstrap_stack_bottom;
                                                   >> 053 extern sos_size_t bootstrap_stack_size;
048                                                   054 
049                                                   055 
050 /* Types.  */                                     056 /* Types.  */
051                                                   057 
052 /* The Multiboot header.  */                      058 /* The Multiboot header.  */
053 typedef struct multiboot_header                   059 typedef struct multiboot_header
054 {                                                 060 {
055   unsigned long magic;                            061   unsigned long magic;
056   unsigned long flags;                            062   unsigned long flags;
057   unsigned long checksum;                         063   unsigned long checksum;
058   unsigned long header_addr;                      064   unsigned long header_addr;
059   unsigned long load_addr;                        065   unsigned long load_addr;
060   unsigned long load_end_addr;                    066   unsigned long load_end_addr;
061   unsigned long bss_end_addr;                     067   unsigned long bss_end_addr;
062   unsigned long entry_addr;                       068   unsigned long entry_addr;
063 } multiboot_header_t;                             069 } multiboot_header_t;
064                                                   070 
065 /* The symbol table for a.out.  */                071 /* The symbol table for a.out.  */
066 typedef struct aout_symbol_table                  072 typedef struct aout_symbol_table
067 {                                                 073 {
068   unsigned long tabsize;                          074   unsigned long tabsize;
069   unsigned long strsize;                          075   unsigned long strsize;
070   unsigned long addr;                             076   unsigned long addr;
071   unsigned long reserved;                         077   unsigned long reserved;
072 } aout_symbol_table_t;                            078 } aout_symbol_table_t;
073                                                   079 
074 /* The section header table for ELF.  */          080 /* The section header table for ELF.  */
075 typedef struct elf_section_header_table           081 typedef struct elf_section_header_table
076 {                                                 082 {
077   unsigned long num;                              083   unsigned long num;
078   unsigned long size;                             084   unsigned long size;
079   unsigned long addr;                             085   unsigned long addr;
080   unsigned long shndx;                            086   unsigned long shndx;
081 } elf_section_header_table_t;                     087 } elf_section_header_table_t;
082                                                   088 
083 /* The Multiboot information.  */                 089 /* The Multiboot information.  */
084 typedef struct multiboot_info                     090 typedef struct multiboot_info
085 {                                                 091 {
086   unsigned long flags;                            092   unsigned long flags;
087   unsigned long mem_lower;                        093   unsigned long mem_lower;
088   unsigned long mem_upper;                        094   unsigned long mem_upper;
089   unsigned long boot_device;                      095   unsigned long boot_device;
090   unsigned long cmdline;                          096   unsigned long cmdline;
091   unsigned long mods_count;                       097   unsigned long mods_count;
092   unsigned long mods_addr;                        098   unsigned long mods_addr;
093   union                                           099   union
094   {                                               100   {
095     aout_symbol_table_t aout_sym;                 101     aout_symbol_table_t aout_sym;
096     elf_section_header_table_t elf_sec;           102     elf_section_header_table_t elf_sec;
097   } u;                                            103   } u;
098   unsigned long mmap_length;                      104   unsigned long mmap_length;
099   unsigned long mmap_addr;                        105   unsigned long mmap_addr;
100   unsigned long drives_length;                    106   unsigned long drives_length;
101   unsigned long drives_addr;                      107   unsigned long drives_addr;
102 } multiboot_info_t;                               108 } multiboot_info_t;
103                                                   109 
104 /* The module structure.  */                      110 /* The module structure.  */
105 typedef struct module                             111 typedef struct module
106 {                                                 112 {
107   unsigned long mod_start;                        113   unsigned long mod_start;
108   unsigned long mod_end;                          114   unsigned long mod_end;
109   unsigned long string;                           115   unsigned long string;
110   unsigned long reserved;                         116   unsigned long reserved;
111 } module_t;                                       117 } module_t;
112                                                   118 
113 /* The memory map. Be careful that the offset     119 /* The memory map. Be careful that the offset 0 is base_addr_low
114    but no size.  */                               120    but no size.  */
115 typedef struct memory_map                         121 typedef struct memory_map
116 {                                                 122 {
117   unsigned long size;                             123   unsigned long size;
118   unsigned long base_addr_low;                    124   unsigned long base_addr_low;
119   unsigned long base_addr_high;                   125   unsigned long base_addr_high;
120   unsigned long length_low;                       126   unsigned long length_low;
121   unsigned long length_high;                      127   unsigned long length_high;
122   unsigned long type;                             128   unsigned long type;
123 } memory_map_t;                                   129 } memory_map_t;
124                                                   130 
125 void dump_multiboot_info(multiboot_info_t *mbi    131 void dump_multiboot_info(multiboot_info_t *mbi);
126                                                   132 
127 #endif /* ! ASM */                                133 #endif /* ! ASM */
128                                                   134 
129 #endif /* __MULTIBOOT_H__ */                      135 #endif /* __MULTIBOOT_H__ */
                                                      

source navigation ] diff markup ] identifier search ] general search ]