47 lines
1.2 KiB
C
47 lines
1.2 KiB
C
#ifndef MULTIBOOT_H
|
|
#define MULTIBOOT_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#define MULTIBOOT_BOOTLOADER_MAGIC 0x2BADB002
|
|
|
|
struct multiboot_mmap_entry {
|
|
uint32_t size;
|
|
uint64_t addr;
|
|
uint64_t len;
|
|
#define MULTIBOOT_MEMORY_AVAILABLE 1
|
|
#define MULTIBOOT_MEMORY_RESERVED 2
|
|
#define MULTIBOOT_MEMORY_ACPI_RECLAIMABLE 3
|
|
#define MULTIBOOT_MEMORY_NVS 4
|
|
#define MULTIBOOT_MEMORY_BADRAM 5
|
|
uint32_t type;
|
|
} __attribute__((packed));
|
|
|
|
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 num;
|
|
uint32_t size;
|
|
uint32_t addr;
|
|
uint32_t shndx;
|
|
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;
|
|
} __attribute__((packed));
|
|
|
|
#endif
|