forked from Bananymous/banan-os
Add GDT and IDT
This commit is contained in:
@@ -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");
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user