summaryrefslogtreecommitdiff
path: root/src/arch/i386/multiboot.h
diff options
context:
space:
mode:
authordzwdz2021-07-17 19:03:45 +0200
committerdzwdz2021-07-17 19:03:45 +0200
commitf84c55f194df088c291fc4359ccec1305be456ce (patch)
tree0476907b089c174adc6e72cfe780134cbd9cbe89 /src/arch/i386/multiboot.h
parent895108bbba356aa39920a42df1587211e424ef8b (diff)
basic boot module support
This loads a file from the boot disk into memory. Currently it just gets printed, but it's going to become a real executable soon.
Diffstat (limited to 'src/arch/i386/multiboot.h')
-rw-r--r--src/arch/i386/multiboot.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/arch/i386/multiboot.h b/src/arch/i386/multiboot.h
new file mode 100644
index 0000000..f030247
--- /dev/null
+++ b/src/arch/i386/multiboot.h
@@ -0,0 +1,31 @@
+#pragma once
+#include <stdint.h>
+
+// TODO assert that pointers have 4 bytes.
+
+struct multiboot_mod {
+ void *start;
+ void *end;
+ const char *str;
+ uint32_t _reserved;
+} __attribute__((packed));
+
+struct multiboot_info {
+ uint32_t flag_mem : 1;
+ uint32_t flag_boot_device : 1;
+ uint32_t flag_cmdline : 1;
+ uint32_t flag_mods : 1;
+ uint32_t _flag_other : 28; // unimplemented
+
+ uint32_t mem_lower;
+ uint32_t mem_upper;
+
+ uint32_t boot_device;
+
+ const char *cmdline;
+
+ uint32_t mods_count;
+ struct multiboot_mod *mods;
+
+ // [...]
+} __attribute__((packed));