2023-07-16 06:54:32 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <stdbool.h>
|
|
|
|
#include <stdint.h>
|
2023-07-17 23:34:52 +00:00
|
|
|
#include <arch/i686/mboot.h>
|
|
|
|
#include <arch/i686/memory.h>
|
2023-07-16 06:54:32 +00:00
|
|
|
|
|
|
|
#define CMDLINE_MAX 32
|
|
|
|
|
|
|
|
struct BootTag {
|
|
|
|
uint8_t valid;
|
|
|
|
uint32_t type;
|
|
|
|
uint32_t size;
|
|
|
|
union {
|
2023-07-22 15:05:30 +00:00
|
|
|
char cmdline[CMDLINE_MAX + 1];
|
2023-07-16 06:54:32 +00:00
|
|
|
struct MemoryMap *memory_map;
|
|
|
|
struct RootSystemDescriptionPointer *rsdp;
|
|
|
|
} data;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct BootInfo {
|
|
|
|
uint32_t total_size;
|
|
|
|
uint32_t reserved;
|
|
|
|
struct BootTag tags[21];
|
|
|
|
};
|
|
|
|
|
|
|
|
enum BootTagID {
|
|
|
|
ID_CMDLINE = 0,
|
2023-07-22 15:05:30 +00:00
|
|
|
ID_MEMORYMAP = 6,
|
2023-07-16 06:54:32 +00:00
|
|
|
ID_RSDP = 14
|
|
|
|
};
|
|
|
|
|
2023-07-22 15:05:30 +00:00
|
|
|
extern void load_boot_info(void* boot_info);
|
|
|
|
extern bool get_boot_tag(enum BootTagID id, struct BootTag **tag);
|