diff options
| author | Nic Gaffney <gaffney_nic@protonmail.com> | 2023-12-11 04:47:44 -0600 |
|---|---|---|
| committer | Nic Gaffney <gaffney_nic@protonmail.com> | 2023-12-11 04:47:44 -0600 |
| commit | 626bd9a53b1085b56ee54c900bfafdad79967725 (patch) | |
| tree | ff0cf34a11301e2cd362a4c7a2f568232b143a8a /src/kernel/gen_gdt.c | |
| parent | 083a88b7e1b2456fe10110b83027793348f3aa42 (diff) | |
| download | gftos-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.c | 18 |
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; } |
