rulimine/common/protos/multiboot1.h

100 lines
1.8 KiB
C

#ifndef __PROTOS__MULTIBOOT1_H__
#define __PROTOS__MULTIBOOT1_H__
#include <stdint.h>
#include <stddef.h>
#include <stdnoreturn.h>
#define MULTIBOOT1_HEADER_MAGIC 0x1BADB002
struct multiboot1_header {
uint32_t magic;
uint32_t flags;
uint32_t checksum;
uint32_t header_addr;
uint32_t load_addr;
uint32_t load_end_addr;
uint32_t bss_end_addr;
uint32_t entry_addr;
uint32_t fb_mode;
uint32_t fb_width;
uint32_t fb_height;
uint32_t fb_bpp;
};
struct multiboot1_elf_sections {
uint32_t num;
uint32_t size;
uint32_t addr;
uint32_t shndx;
};
struct multiboot1_info {
uint32_t flags;
uint32_t mem_lower;
uint32_t mem_upper;
uint32_t boot_device;
uint32_t cmdline;
uint32_t mods_count;
uint32_t mods_addr;
struct multiboot1_elf_sections elf_sect;
uint32_t mmap_length;
uint32_t mmap_addr;
uint32_t drives_length;
uint32_t drivers_addr;
uint32_t rom_config_table;
uint32_t bootloader_name;
uint32_t apm_table;
uint32_t vbe_control_info;
uint32_t vbe_mode_info;
uint16_t vbe_mode;
uint16_t vbe_interface_seg;
uint16_t vbe_interface_off;
uint16_t vbe_interface_len;
uint64_t fb_addr;
uint32_t fb_pitch;
uint32_t fb_width;
uint32_t fb_height;
uint8_t fb_bpp;
uint8_t fb_type;
uint8_t fb_red_mask_shift;
uint8_t fb_red_mask_size;
uint8_t fb_green_mask_shift;
uint8_t fb_green_mask_size;
uint8_t fb_blue_mask_shift;
uint8_t fb_blue_mask_size;
};
struct multiboot1_module {
uint32_t begin;
uint32_t end;
uint32_t cmdline;
uint32_t pad;
};
struct multiboot1_mmap_entry {
uint32_t size;
uint64_t addr;
uint64_t len;
uint32_t type;
} __attribute__((packed));
noreturn void multiboot1_load(char *config, char *cmdline);
#endif