From 626bd9a53b1085b56ee54c900bfafdad79967725 Mon Sep 17 00:00:00 2001 From: Nic Gaffney Date: Mon, 11 Dec 2023 04:47:44 -0600 Subject: added a couple small things, nothing really changed --- src/kernel/gen_gdt.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'src/kernel/gen_gdt.c') diff --git a/src/kernel/gen_gdt.c b/src/kernel/gen_gdt.c index 05eedaa..ccfb461 100644 --- a/src/kernel/gen_gdt.c +++ b/src/kernel/gen_gdt.c @@ -1,11 +1,19 @@ #include "gdt.h" +#include GDT_t *table = 0x0; -GDTR_t gdtr = {0, 0}; +extern GDTR_t gdtr; void get_gdtr() { - *table = (GDT_t){make_descriptor(0, 0, 0), - make_descriptor(0x0000, 0xFFFFF, make_code(0, 0, 1)), - make_descriptor(0x0000, 0xFFFFF, make_data(0, 0, 1))}; + uint32_t base = 0x0000; + + *table = (GDT_t){ + // NULL + make_descriptor(0, 0, 0), + // Code segment, read + make_descriptor(base, 0x8FFFF, make_code(0, 0, 1)), + // Data segment, read write + make_descriptor(base, 0x8FFFF, make_data(0, 0, 1)), + }; gdtr.size = sizeof(Segment_Descriptor_t) * 3 - 1; - gdtr.offset = 0x0; + gdtr.offset = base; } -- cgit v1.2.3