From 43d92e30ad3743b8d0ce6593c17892fe1a78a1e8 Mon Sep 17 00:00:00 2001 From: EmulatedSeasons <89668582+EmulatedSeasons@users.noreply.github.com> Date: Mon, 20 Jan 2025 18:23:02 -0500 Subject: moved limine.cpp stuff to kernel.cpp (and fixed framebuffer pixel drawing) --- kernel/arch/x86_64/arch_init.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 kernel/arch/x86_64/arch_init.cpp (limited to 'kernel/arch/x86_64/arch_init.cpp') diff --git a/kernel/arch/x86_64/arch_init.cpp b/kernel/arch/x86_64/arch_init.cpp new file mode 100644 index 0000000..eb0e442 --- /dev/null +++ b/kernel/arch/x86_64/arch_init.cpp @@ -0,0 +1,19 @@ +#include "gdt.h" +#include "idt.h" + +void arch_init() { + // setup gdt + SegDesc segs[5]; + GDTR gdtr{sizeof(struct SegDesc) * 5 - 1, (uint64_t)&segs}; + + gdt_entry(&segs[0], 0, 0, 0, 0); // null desc + gdt_entry(&segs[1], 0, 0xFFFFF, 0x9A, 0xA); // kcode + gdt_entry(&segs[2], 0, 0xFFFFF, 0x92, 0xA); // kdata + gdt_entry(&segs[3], 0, 0xFFFFF, 0xFA, 0xA); // ucode + gdt_entry(&segs[4], 0, 0xFFFFF, 0xF2, 0xA); // udata + + load_gdt(&gdtr); + reload_segments(); + + setup_idt(); +} \ No newline at end of file -- cgit v1.2.3-70-g09d2