GDT init (load + flush)

This commit is contained in:
2025-12-22 11:20:24 +01:00
parent 29deb20cd7
commit 6fc7266716
8 changed files with 195 additions and 72 deletions

26
src/mem/gdt.h Normal file
View File

@@ -0,0 +1,26 @@
#ifndef GDT_H
#define GDT_H
#include <stdint.h>
// We're using the GDT for segmentation, but as we want to target Long Mode,
// we'll only use this as a requirement for paging, not more.
// This means base 0 and no limit (whole address space)
#define NUM_GDT_ENTRIES 5
#define NULL_SELECTOR 0x00
#define KERNEL_CODE_SEGMENT 0x08
#define KERNEL_DATA_SEGMENT 0x10
#define USER_CODE_SEGMENT 0x18
#define USER_DATA_SEGMENT 0x20
struct GDTR
{
uint16_t limit;
uint64_t address;
} __attribute__((packed));
void gdt_init();
#endif