summaryrefslogtreecommitdiff
path: root/kernel/mboot/mboot.h
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2025-04-03 22:19:32 -0400
committerFreya Murphy <freya@freyacat.org>2025-04-03 22:19:32 -0400
commit876970bcfd69ed3742d1a47640aa551578f22919 (patch)
tree2dddbc00f9ffccf687f1e5f1055e19b3939a73a3 /kernel/mboot/mboot.h
parentadd 64-bit idt/pic and fix paging (diff)
downloadcomus-876970bcfd69ed3742d1a47640aa551578f22919.tar.gz
comus-876970bcfd69ed3742d1a47640aa551578f22919.tar.bz2
comus-876970bcfd69ed3742d1a47640aa551578f22919.zip
load multiboot memory map, heap is done!!!
Diffstat (limited to 'kernel/mboot/mboot.h')
-rw-r--r--kernel/mboot/mboot.h106
1 files changed, 106 insertions, 0 deletions
diff --git a/kernel/mboot/mboot.h b/kernel/mboot/mboot.h
new file mode 100644
index 0000000..39a961d
--- /dev/null
+++ b/kernel/mboot/mboot.h
@@ -0,0 +1,106 @@
+/**
+ * @file mboot.h
+ *
+ * @author Freya Murphy <freya@freyacat.org>
+ *
+ * Internal multiboot structures
+ */
+
+#ifndef __MBOOT_H_
+#define __MBOOT_H_
+
+#include <lib.h>
+
+#define MBOOT_HEADER_MAGIC 0x36D76289
+
+#define MBOOT_CMDLINE 1
+#define MBOOT_MEMORY_MAP 6
+#define MBOOT_FRAMEBUFFER 8
+#define MBOOT_ELF_SYMBOLS 9
+#define MBOOT_OLD_RSDP 14
+#define MBOOT_NEW_RSDP 15
+
+struct mboot_info {
+ uint32_t total_size;
+ uint32_t reserved;
+ char tags[];
+};
+
+struct mboot_tag {
+ uint32_t type;
+ uint32_t size;
+ char data[];
+};
+
+struct mboot_tag_elf_sections {
+ uint32_t type;
+ uint32_t size;
+ uint16_t num;
+ uint16_t entsize;
+ uint16_t shndx;
+ uint16_t reserved;
+ char sections[];
+};
+
+struct mboot_tag_elf_sections_entry {
+ uint32_t sh_name;
+ uint32_t sh_type;
+ uint64_t sh_flags;
+ uint64_t sh_addr;
+ uint64_t sh_offset;
+ uint64_t sh_size;
+ uint32_t sh_link;
+ uint32_t sh_info;
+ uint64_t sh_addralign;
+ uint64_t sh_entsize;
+};
+
+struct mboot_mmap_entry {
+ uint64_t addr;
+ uint64_t len;
+ uint32_t type;
+ uint32_t zero;
+};
+
+struct mboot_tag_mmap {
+ uint32_t type;
+ uint32_t size;
+ uint32_t entry_size;
+ uint32_t entry_version;
+ struct mboot_mmap_entry entries[];
+};
+
+
+struct mboot_tag_old_rsdp {
+ uint32_t type;
+ uint32_t size;
+ char rsdp[];
+};
+
+struct mboot_tag_new_rsdp {
+ uint32_t type;
+ uint32_t size;
+ char rsdp[];
+};
+
+struct mboot_tag_cmdline {
+ uint32_t type;
+ uint32_t size;
+ uint8_t cmdline[];
+};
+
+struct mboot_tag_framebuffer {
+ uint32_t type;
+ uint32_t size;
+ uint64_t framebuffer_addr;
+ uint32_t framebuffer_pitch;
+ uint32_t framebuffer_width;
+ uint32_t framebuffer_height;
+ uint8_t framebuffer_bpp;
+ uint8_t framebuffer_type;
+ uint16_t reserved;
+};
+
+void *locate_mboot_table(volatile void *mboot, uint32_t type);
+
+#endif /* mboot.h */