From 481b4e303ab578171114d5e09bb9daff4c4e1d1a Mon Sep 17 00:00:00 2001 From: Freya Murphy Date: Sat, 27 Jan 2024 03:01:43 -0500 Subject: mboot parsing --- src/arch/amd64/mboot.h | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/arch/amd64/mboot.h (limited to 'src/arch/amd64/mboot.h') diff --git a/src/arch/amd64/mboot.h b/src/arch/amd64/mboot.h new file mode 100644 index 0000000..88348f5 --- /dev/null +++ b/src/arch/amd64/mboot.h @@ -0,0 +1,40 @@ +#pragma once + +#include + +#define CMDLINE_MAX 32 + +struct mboot_tag { + uint8_t valid; // if the tag at this location is set + uint32_t type; + uint32_t size; + union { + char cmdline[CMDLINE_MAX + 1]; + void *rootsdp; + } data; +}; + +enum mboot_tag_type { + MBOOT_CMDLINE = 0, + MBOOT_XSDP = 14 +}; + +struct mboot_info { + uint32_t total_size; + uint32_t reserved; + struct mboot_tag tags[21]; +}; + +/** + * Loads the multi boot information + * @param mboot_info - the pointer passed from multiboot2 + */ +struct mboot_info mboot_load_info(void *mboot_info); + +/** + * Gets a tag from multiboot + * @param type - the tag type + * @returns NULL - tag not loaded + * @returns tag - tag was loaded + */ +struct mboot_tag *mboot_get_tag(struct mboot_info *info, enum mboot_tag_type type); -- cgit v1.2.3-freya