58 lines
1.2 KiB
C
58 lines
1.2 KiB
C
#pragma once
|
|
|
|
#include <stdint.h>
|
|
|
|
#define MULTIBOOT_FLAGS_FRAMEBUFFER (1 << 12)
|
|
|
|
#define MULTIBOOT_FRAMEBUFFER_TYPE_GRAPHICS 1
|
|
#define MULTIBOOT_FRAMEBUFFER_TYPE_TEXT 2
|
|
|
|
struct framebuffer_info_t
|
|
{
|
|
uint64_t addr;
|
|
uint32_t pitch;
|
|
uint32_t width;
|
|
uint32_t height;
|
|
uint8_t bpp;
|
|
uint8_t type;
|
|
uint8_t color_info[6];
|
|
};
|
|
|
|
struct multiboot_memory_map_t
|
|
{
|
|
uint32_t size;
|
|
uint64_t base_addr;
|
|
uint64_t length;
|
|
uint32_t type;
|
|
} __attribute__((packed));
|
|
|
|
// https://www.gnu.org/software/grub/manual/multiboot/multiboot.html#Boot-information-format
|
|
struct multiboot_info_t
|
|
{
|
|
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 boot_loader_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;
|
|
framebuffer_info_t framebuffer;
|
|
};
|
|
|
|
extern "C" multiboot_info_t* g_multiboot_info;
|
|
extern "C" uint32_t g_multiboot_magic;
|