From 02811acc2cad5bda6c4c29d8905e436ba4320e20 Mon Sep 17 00:00:00 2001 From: Julien CLEMENT Date: Fri, 16 Jul 2021 02:47:12 +0200 Subject: [PATCH] feat(gdt): add macros for generic kernel segment descriptors Signed-off-by: Julien CLEMENT --- k/gdt.c | 10 ++-------- k/gdt.h | 3 +++ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/k/gdt.c b/k/gdt.c index 42b53eb..507795f 100644 --- a/k/gdt.c +++ b/k/gdt.c @@ -78,10 +78,7 @@ static void load_gdt(void) static void load_ds(void) { - struct segment_selector selector; - selector.index = KERNEL_DS_INDEX; - selector.table_indicator = 0; - selector.rpl = 0; + struct segment_selector selector = KERNEL_DS_SEGMENT_SELECTOR; asm volatile("movw %0, %%ax\n" "movw %%ax, %%ds\n" @@ -95,10 +92,7 @@ static void load_ds(void) static void load_cs(void) { - struct segment_selector selector; - selector.index = KERNEL_CS_INDEX; - selector.table_indicator = 0; - selector.rpl = 0; + struct segment_selector selector = KERNEL_CS_SEGMENT_SELECTOR; asm volatile("pushl %0\n" "pushl $1f\n" diff --git a/k/gdt.h b/k/gdt.h index 7704d0b..3a0f9fc 100644 --- a/k/gdt.h +++ b/k/gdt.h @@ -9,6 +9,9 @@ #define KERNEL_CS_INDEX 1 #define KERNEL_DS_INDEX 2 +#define KERNEL_CS_SEGMENT_SELECTOR {0, 0, KERNEL_CS_INDEX} +#define KERNEL_DS_SEGMENT_SELECTOR {0, 0, KERNEL_DS_INDEX} + struct gdt_entry { uint16_t limit_1 : 16; // 16 lsbs of the segment limit