aboutsummaryrefslogtreecommitdiff
path: root/src/kernel/gen_gdt.c
diff options
context:
space:
mode:
authorNic Gaffney <gaffney_nic@protonmail.com>2023-12-11 04:47:44 -0600
committerNic Gaffney <gaffney_nic@protonmail.com>2023-12-11 04:47:44 -0600
commit626bd9a53b1085b56ee54c900bfafdad79967725 (patch)
treeff0cf34a11301e2cd362a4c7a2f568232b143a8a /src/kernel/gen_gdt.c
parent083a88b7e1b2456fe10110b83027793348f3aa42 (diff)
downloadgftos-626bd9a53b1085b56ee54c900bfafdad79967725.tar.gz
added a couple small things, nothing really changed
Diffstat (limited to 'src/kernel/gen_gdt.c')
-rw-r--r--src/kernel/gen_gdt.c18
1 files changed, 13 insertions, 5 deletions
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 <stdint.h>
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;
}