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
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
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
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
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