hazel/include/kernel/multiboot.h
2024-07-02 18:44:36 -04:00

47 lines
1.6 KiB
C

#ifndef HAZEL_MULTIBOOT_H_
#define HAZEL_MULTIBOOT_H_
#include <stdint.h>
typedef struct {
uint32_t flags; //required
uint32_t memlower; //if bit 0 in flags are set
uint32_t memupper; //if bit 0 in flags are set
uint32_t bootdevice; //if bit 1 in flags are set
uint32_t commandline; //if bit 2 in flags are set
uint32_t modulecount; //if bit 3 in flags are set
uint32_t moduleaddress; //if bit 3 in flags are set
uint32_t syms[4]; //if bits 4 or 5 in flags are set
uint32_t memmaplength; //if bit 6 in flags is set
uint32_t memmapaddress; //if bit 6 in flags is set
uint32_t driveslength; //if bit 7 in flags is set
uint32_t drivesaddress; //if bit 7 in flags is set
uint32_t configtable; //if bit 8 in flags is set
uint32_t apmtable; //if bit 9 in flags is set
uint32_t vbecontrolinfo; //if bit 10 in flags is set
uint32_t vbemodeinfo; //if bit 11 in flags is set
uint32_t vbemode; // all vbe_* set if bit 12 in flags are set
uint32_t vbeinterfaceseg;
uint32_t vbeinterfaceoff;
uint32_t vbeinterfacelength;
} multiboot_info_t;
struct multiboot_mmap_entry
{
uint32_t size;
uint32_t addr_low;
uint32_t addr_high;
uint32_t len_low;
uint32_t len_high;
#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));
typedef struct multiboot_mmap_entry multi_mmap_t;
#endif