Add multiboot module
diff --git a/src/kernel/multiboot.c b/src/kernel/multiboot.c
new file mode 100644
index 0000000..13e1f98
--- /dev/null
+++ b/src/kernel/multiboot.c
@@ -0,0 +1,25 @@
+#include "multiboot.h"
+#include "io.h"
+#include "log.h"
+
+#define TO_VIRT(val, t) val = (t)((size_t)val + 0xc0000000u)
+
+// old should be a VIRTUAL address
+struct multiboot make_multiboot_physical(struct multiboot *old)
+{
+	struct multiboot mb;
+	memcpy(&mb, old, sizeof(mb));
+
+	// Make modules physical
+	TO_VIRT(mb.mods_addr, uint **);
+	TO_VIRT(mb.cmdline, char *);
+
+	kprintf("mb.mods_addr = %d, 0x%x\n", mb.mods_addr, mb.mods_addr);
+	kassert((size_t)mb.mods_addr > 0xc0000000, "mb.mods_addr PHYSICAL");
+	for (int i = 0; i < mb.mods_count + 1; i++)
+	{
+		TO_VIRT(mb.mods_addr[i], uint *);
+	}
+
+	return mb;
+}