From 2d59766eb330b9d15a9bcbcd7e1695809fc099c5 Mon Sep 17 00:00:00 2001 From: EmulatedSeasons <89668582+EmulatedSeasons@users.noreply.github.com> Date: Fri, 3 May 2024 03:39:47 -0400 Subject: renamed i386 to x86 --- kernel/arch/x86/multiboot.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 kernel/arch/x86/multiboot.cpp (limited to 'kernel/arch/x86/multiboot.cpp') diff --git a/kernel/arch/x86/multiboot.cpp b/kernel/arch/x86/multiboot.cpp new file mode 100644 index 0000000..9f3eedb --- /dev/null +++ b/kernel/arch/x86/multiboot.cpp @@ -0,0 +1,30 @@ +#include +#include +#include +#include "multiboot.h" +#include + +// gets the memory map and stuff +extern "C" void multiboot_main(multiboot_info_t* mbd, uint32_t magic) { + terminal_initialize(); + //printf("multiboot struc addr: %x\n", mbd); + if (magic != MULTIBOOT_BOOTLOADER_MAGIC) { + printf("Invalid multiboot magic number\n"); + abort(); + } + + // checks bit 6 to see if there's a valid memory map + if (!(mbd->flags >> 6 & 0x1)) { + printf("Invalid GRUB memory map\n"); + abort(); + } + + // loop through memory map and display the values + for (int i = 0; i < mbd->mmap_length; i += sizeof(multiboot_memory_map_t)) { + multiboot_memory_map_t* mmmt = (multiboot_memory_map_t*)(mbd->mmap_addr + i); + + printf("Start Addr: 0x%lx | Length: 0x%lx | Size: 0x%x | Type: %d\n", + mmmt->addr, mmmt->len, mmmt->size, mmmt->type); + //printf("%lx,%x,%x,%d\n", mmmt->size, mmmt->size, mmmt->size, mmmt->size); + } +} \ No newline at end of file -- cgit v1.2.3-70-g09d2