From 7a912d1b668ab86ffe088eca3ac7e6f78a04a0c5 Mon Sep 17 00:00:00 2001 From: Tyler Murphy <=> Date: Mon, 17 Jul 2023 19:34:52 -0400 Subject: refactoring --- kernel/src/arch/i686/gdt.asm | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 kernel/src/arch/i686/gdt.asm (limited to 'kernel/src/arch/i686/gdt.asm') diff --git a/kernel/src/arch/i686/gdt.asm b/kernel/src/arch/i686/gdt.asm new file mode 100644 index 0000000..ea8a86b --- /dev/null +++ b/kernel/src/arch/i686/gdt.asm @@ -0,0 +1,42 @@ +global load_gdt + +%macro gdt_entry 4 + db %2 & 0xff + db (%2 >> 8) & 0xff + db %1 & 0xff + db (%1 >> 8) & 0xff + db (%1 >> 16) & 0xff + db %3 + db ((%2 >> 16) & 0x0f) | (%4 << 4) + db (%1 >> 24) & 0xff +%endmacro + +section .rodata +align 16 +gdt_start: +gdt_entry 0, 0, 0, 0 +gdt_entry 0, 0xFFFFF, 0x9A, 0xC +gdt_entry 0, 0xFFFFF, 0x92, 0xC +gdt_end: +gdt_descriptor: + dw gdt_end - gdt_start - 1 + dd gdt_start + + +section .text +align 8 +load_gdt: + cli + lgdt [gdt_descriptor] + mov eax, cr0 + or al, 1 + mov cr0, eax + mov ax, 0x10 + mov ds, ax + mov ss, ax + mov es, ax + mov fs, ax + mov gs, ax + jmp 0x08:after_gdt +after_gdt: + ret -- cgit v1.2.3-freya