From 5d790cadbbaccf2b92c07eaed3cde33dd3f1b38e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Lov=C3=A9n?= Date: Thu, 6 Jan 2022 00:53:59 +0100 Subject: [PATCH] Cleanup --- src/kernel/boot/kmain.c | 12 ++++++------ src/kernel/boot/multiboot.c | 2 -- src/kernel/cpu/cpu.c | 6 ++++++ src/kernel/include/cpu.h | 4 ++++ 4 files changed, 16 insertions(+), 8 deletions(-) create mode 100644 src/kernel/cpu/cpu.c diff --git a/src/kernel/boot/kmain.c b/src/kernel/boot/kmain.c index 716c850..d0c304d 100644 --- a/src/kernel/boot/kmain.c +++ b/src/kernel/boot/kmain.c @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -23,11 +24,11 @@ void kmain(uint64_t multiboot_magic, void *multiboot_data) debug("Started kernel\n"); - debug("Multiboot magic: %x", multiboot_magic); + cpu_init(); + multiboot_init(multiboot_magic, P2V(multiboot_data)); - debug_info("Multiboot v %d kernel loaded.\n", kernel_boot_data.multiboot_version); - debug_info("Bootloader: %s\n", kernel_boot_data.bootloader); + debug_info("Kernel loaded with command line: \"%s\" by <%s>\n", kernel_boot_data.commandline, kernel_boot_data.bootloader); debug_info("Memory areas:\n"); size_t index = 0; @@ -37,9 +38,6 @@ void kmain(uint64_t multiboot_magic, void *multiboot_data) { debug_info("%d %x-%x\n", type, start, end); } - - interrupt_init(); - bind_interrupt(0, divbyzero); debug("Hello, world!"); @@ -47,6 +45,8 @@ void kmain(uint64_t multiboot_magic, void *multiboot_data) // Force a divide by zero error divide(5, 0); + debug_info("Boot complete\n"); + PANIC("End of kernel function!"); debug_info("Broke out of panic"); diff --git a/src/kernel/boot/multiboot.c b/src/kernel/boot/multiboot.c index 03f5e21..4e6b22f 100644 --- a/src/kernel/boot/multiboot.c +++ b/src/kernel/boot/multiboot.c @@ -1,7 +1,6 @@ #include #include #include -#include // https://www.gnu.org/software/grub/manual/multiboot2/multiboot.html @@ -47,7 +46,6 @@ int parse_multiboot2(struct taglist *tags) struct tag *tag = incptr(tags, sizeof(struct taglist)); while(tag->type) { - debug("Tag type: %d\n", tag->type); switch(tag->type) { case MBOOT2_TAG_BOOTLOADER: diff --git a/src/kernel/cpu/cpu.c b/src/kernel/cpu/cpu.c new file mode 100644 index 0000000..d2162bc --- /dev/null +++ b/src/kernel/cpu/cpu.c @@ -0,0 +1,6 @@ +#include + +void cpu_init() +{ + interrupt_init(); +} \ No newline at end of file diff --git a/src/kernel/include/cpu.h b/src/kernel/include/cpu.h index aa4f679..2b1604d 100644 --- a/src/kernel/include/cpu.h +++ b/src/kernel/include/cpu.h @@ -1,3 +1,7 @@ #pragma once +// cpu/cpu.c +void cpu_init(); + +// cpu/registers.S void load_idt(void *); \ No newline at end of file