Main Page   File List  

mb_info.h

00001 
00006 #ifndef L4UTIL_MB_INFO_H
00007 #define L4UTIL_MB_INFO_H
00008 
00009 #ifndef __ASSEMBLY__
00010 
00011 #include <l4/sys/l4int.h>
00012 
00019 typedef struct
00020 {
00021   l4_uint32_t mod_start;        
00022   l4_uint32_t mod_end;          
00023   l4_uint32_t cmdline;          
00024   l4_uint32_t pad;              
00025 } l4util_mb_mod_t;
00026 
00027 
00035 typedef struct __attribute__((packed))
00036 {
00037   l4_uint32_t struct_size;      
00038   l4_uint64_t addr;             
00039   l4_uint64_t size;             
00040   l4_uint32_t type;             
00041   /* unspecified optional padding... */
00042 } l4util_mb_addr_range_t;
00043 
00045 #define MB_ARD_MEMORY           1
00046 
00051 #define MB_ART_MEMORY   1  
00052 #define MB_ART_RESERVED 2  
00053 #define MB_ART_ACPI     3  
00055 #define MB_ART_NVS      4  
00056 #define MB_ART_UNUSABLE 5  
00060 typedef struct
00061 {
00062   l4_uint32_t size;             
00063   l4_uint8_t drive_number;      
00064   l4_uint8_t drive_mode;        
00065   l4_uint16_t drive_cylinders;  
00066   l4_uint8_t drive_heads;       
00067   l4_uint8_t drive_sectors;     
00068   l4_uint16_t drive_ports[0];   
00069 } l4util_mb_drive_t;
00070 
00071 /* Drive Mode.  */
00072 #define MB_DI_CHS_MODE          0
00073 #define MB_DI_LBA_MODE          1
00074 
00075 
00077 typedef struct
00078 {
00079   l4_uint16_t version;
00080   l4_uint16_t cseg;
00081   l4_uint32_t offset;
00082   l4_uint16_t cseg_16;
00083   l4_uint16_t dseg_16;
00084   l4_uint16_t cseg_len;
00085   l4_uint16_t cseg_16_len;
00086   l4_uint16_t dseg_16_len;
00087 } l4util_mb_apm_t;
00088 
00089 
00091 typedef struct
00092 {
00093   l4_uint8_t signature[4];
00094   l4_uint16_t version;
00095   l4_uint32_t oem_string;
00096   l4_uint32_t capabilities;
00097   l4_uint32_t video_mode;
00098   l4_uint16_t total_memory;
00099   l4_uint16_t oem_software_rev;
00100   l4_uint32_t oem_vendor_name;
00101   l4_uint32_t oem_product_name;
00102   l4_uint32_t oem_product_rev;
00103   l4_uint8_t reserved[222];
00104   l4_uint8_t oem_data[256];
00105 } __attribute__((packed)) l4util_mb_vbe_ctrl_t;
00106 
00107 
00109 typedef struct
00110 {
00113   l4_uint16_t mode_attributes;
00114   l4_uint8_t win_a_attributes;
00115   l4_uint8_t win_b_attributes;
00116   l4_uint16_t win_granularity;
00117   l4_uint16_t win_size;
00118   l4_uint16_t win_a_segment;
00119   l4_uint16_t win_b_segment;
00120   l4_uint32_t win_func;
00121   l4_uint16_t bytes_per_scanline;
00126   l4_uint16_t x_resolution;
00127   l4_uint16_t y_resolution;
00128   l4_uint8_t x_char_size;
00129   l4_uint8_t y_char_size;
00130   l4_uint8_t number_of_planes;
00131   l4_uint8_t bits_per_pixel;
00132   l4_uint8_t number_of_banks;
00133   l4_uint8_t memory_model;
00134   l4_uint8_t bank_size;
00135   l4_uint8_t number_of_image_pages;
00136   l4_uint8_t reserved0;
00141   l4_uint8_t red_mask_size;
00142   l4_uint8_t red_field_position;
00143   l4_uint8_t green_mask_size;
00144   l4_uint8_t green_field_position;
00145   l4_uint8_t blue_mask_size;
00146   l4_uint8_t blue_field_position;
00147   l4_uint8_t reserved_mask_size;
00148   l4_uint8_t reserved_field_position;
00149   l4_uint8_t direct_color_mode_info;
00154   l4_uint32_t phys_base;
00155   l4_uint32_t reserved1;
00156   l4_uint16_t reversed2;
00161   l4_uint16_t linear_bytes_per_scanline;
00162   l4_uint8_t banked_number_of_image_pages;
00163   l4_uint8_t linear_number_of_image_pages;
00164   l4_uint8_t linear_red_mask_size;
00165   l4_uint8_t linear_red_field_position;
00166   l4_uint8_t linear_green_mask_size;
00167   l4_uint8_t linear_green_field_position;
00168   l4_uint8_t linear_blue_mask_size;
00169   l4_uint8_t linear_blue_field_position;
00170   l4_uint8_t linear_reserved_mask_size;
00171   l4_uint8_t linear_reserved_field_position;
00172   l4_uint32_t max_pixel_clock;
00173 
00174   l4_uint8_t reserved3[189];
00176 } __attribute__ ((packed)) l4util_mb_vbe_mode_t;
00177 
00178 
00187 typedef struct
00188 {
00189   l4_uint32_t flags;            
00190   l4_uint32_t mem_lower;        
00191   l4_uint32_t mem_upper;        
00192   l4_uint32_t boot_device;      
00193   l4_uint32_t cmdline;          
00194   l4_uint32_t mods_count;       
00195   l4_uint32_t mods_addr;        
00197   union
00198   {
00199     struct
00200     {
00202       l4_uint32_t tabsize;
00203       l4_uint32_t strsize;
00204       l4_uint32_t addr;
00205       l4_uint32_t pad;
00206     }
00207     a;
00208     
00209     struct
00210     {
00212       l4_uint32_t num;
00213       l4_uint32_t size;
00214       l4_uint32_t addr;
00215       l4_uint32_t shndx;
00216     }
00217     e;
00218   }
00219   syms;
00220   
00221   l4_uint32_t mmap_length;      
00222   l4_uint32_t mmap_addr;        
00223   l4_uint32_t drives_length;    
00224   l4_uint32_t drives_addr;      
00225   l4_uint32_t config_table;     
00226   l4_uint32_t boot_loader_name; 
00227   l4_uint32_t apm_table;        
00228   l4_uint32_t vbe_ctrl_info;    
00229   l4_uint32_t vbe_mode_info;    
00230   l4_uint16_t vbe_mode;         
00231   l4_uint16_t vbe_interface_seg; 
00232   l4_uint16_t vbe_interface_off; 
00233   l4_uint16_t vbe_interface_len; 
00234 } l4util_mb_info_t;
00235 
00236 #endif /* ! __ASSEMBLY__ */
00237 
00243 #define L4UTIL_MB_MEMORY                0x00000001
00244 
00246 #define L4UTIL_MB_BOOTDEV               0x00000002
00247 
00249 #define L4UTIL_MB_CMDLINE               0x00000004
00250 
00252 #define L4UTIL_MB_MODS                  0x00000008
00253 
00254 /* These next two are mutually exclusive */
00256 #define L4UTIL_MB_AOUT_SYMS             0x00000010
00257 
00259 #define L4UTIL_MB_ELF_SHDR              0x00000020
00260 
00262 #define L4UTIL_MB_MEM_MAP               0x00000040
00263 
00265 #define L4UTIL_MB_DRIVE_INFO            0x00000080
00266 
00268 #define L4UTIL_MB_CONFIG_TABLE          0x00000100
00269 
00271 #define L4UTIL_MB_BOOT_LOADER_NAME      0x00000200
00272 
00274 #define L4UTIL_MB_APM_TABLE             0x00000400
00275 
00277 #define L4UTIL_MB_VIDEO_INFO            0x00000800
00278 
00279 
00281 #define L4UTIL_MB_VALID                 0x2BADB002UL
00282 #define L4UTIL_MB_VALID_ASM             0x2BADB002
00283 
00284 
00285 #endif
00286 

L4 Utilities, part of DROPS  © 2000-2003