Files
kern/kernel/multiboot.h
T

97 lines
1.8 KiB
C

#ifndef _MULTIBOOT_H
#define _MULTIBOOT_H
#include "stdint.h"
#define __packed __attribute__ ((packed))
#define HEAD_MAGIC 0x1BADB002
#define BOOT_MAGIC 0x2BADB002
// Multiboot Header Flags
enum {
MBH_PAGE_ALIGN = (1<<0),
MBH_MEMORY_INFO = (1<<1),
MBH_GRAPH_INFO = (1<<2),
MBH_ADDR_FIELDS = (1<<16),
};
struct multiboot_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 mode_type;
uint32_t width;
uint32_t height;
uint32_t depth;
} __packed;
// Multiboot Info Flags
enum {
MBI_MEMORY = (1<<0),
MBI_BOOT_DEV = (1<<1),
MBI_CMDLINE = (1<<2),
MBI_MODS = (1<<3),
MBI_SYMBOLS = (1<<4),
MBI_ELF_HEAD = (1<<5),
MBI_MEMMAP = (1<<6),
MBI_DRIVES = (1<<7),
MBI_CONF_TAB = (1<<8),
MBI_BOOTLD_NAME = (1<<9),
MBI_APM_TABLE = (1<<10),
MBI_VBE_TABLE = (1<<11),
MBI_FB_TABLE = (1<<12),
};
struct multiboot_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;
uint32_t syms[4];
uint32_t mmap_length;
uint32_t mmap_addr;
uint32_t drives_length;
uint32_t drives_addr;
uint32_t config_table;
uint32_t bootloader_name;
uint32_t apm_table;
uint32_t vbe_control_info;
uint32_t vbe_mode_info;
uint32_t vbe_mode;
uint32_t vbe_interface_seg;
uint32_t vbe_interface_off;
uint32_t vbe_interface_len;
uint32_t framebuffer_addr;
uint32_t framebuffer_pitch;
uint32_t framebuffer_width;
uint32_t framebuffer_height;
uint32_t framebuffer_bpp;
uint32_t framebuffer_type;
uint32_t color_info;
} __packed;
struct multiboot_module {
uint32_t start;
uint32_t end;
uint32_t cmdline;
uint32_t __reserved;
} __packed;
struct multiboot_memmap {
uint32_t size;
uint64_t base;
uint64_t len;
uint32_t type;
} __packed;
#endif