diff options
Diffstat (limited to '')
-rw-r--r-- | src/arch/amd64/mboot.h | 40 |
1 files changed, 40 insertions, 0 deletions
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 <stdint.h> + +#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); |