Add GDT and IDT

This commit is contained in:
2022-11-16 19:49:09 +02:00
parent b500a8a7ed
commit f2b45ba212
6 changed files with 236 additions and 15 deletions

View File

@@ -1,4 +1,5 @@
#include <kernel/GDT.h>
#include <kernel/IDT.h>
#include <kernel/kmalloc.h>
#include <kernel/multiboot.h>
#include <kernel/panic.h>
@@ -17,27 +18,21 @@ extern "C"
void kernel_main(multiboot_info_t* mbi, uint32_t magic)
{
DISABLE_INTERRUPTS();
if (magic != 0x2BADB002)
asm volatile("hlt");
s_multiboot_info = mbi;
terminal_initialize();
if (magic != 0x2BADB002)
Kernel::panic("Invalid magic in multiboot");
kmalloc_initialize();
if (!(mbi->flags & (1 << 6)))
Kernel::panic("Bootloader did not provide memory map");
for (uint32_t i = 0; i < mbi->mmap_length;)
{
multiboot_memory_map_t* mmmt = (multiboot_memory_map_t*)(mbi->mmap_addr + i);
if (mmmt->type == 1)
kprint("Size: {}, Addr: {}, Length: {}, Type: {}\n", mmmt->size, (void*)mmmt->base_addr, (void*)mmmt->length, mmmt->type);
i += mmmt->size + sizeof(uint32_t);
}
printf("Hello from the kernel!\n");
gdt_initialize();
idt_initialize();
kprint("Hello from the kernel!\n");
asm volatile("int $14");
}