From 2d59766eb330b9d15a9bcbcd7e1695809fc099c5 Mon Sep 17 00:00:00 2001 From: EmulatedSeasons <89668582+EmulatedSeasons@users.noreply.github.com> Date: Fri, 3 May 2024 03:39:47 -0400 Subject: renamed i386 to x86 --- kernel/arch/x86/gdt.asm | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 kernel/arch/x86/gdt.asm (limited to 'kernel/arch/x86/gdt.asm') diff --git a/kernel/arch/x86/gdt.asm b/kernel/arch/x86/gdt.asm new file mode 100644 index 0000000..e3af8bd --- /dev/null +++ b/kernel/arch/x86/gdt.asm @@ -0,0 +1,35 @@ +; gdt.asm +; GDT is defined here + +gdt_start: + +gdt_null: ; Null segment + dd 0x0 + dd 0x0 + +gdt_kcode: ; Kernel code segment. Kernel has seperate segment from users for ring level + ; flag and access byte description on osdev wiki + dw 0xffff ; low limit + dw 0x0 ;low base + db 0x0 ; mid base + db 10011010b ; order (reversed): ac, rw, dc, ex, s, privl, pr + db 11001111b ; flags then limit. order (reversed): 0, 0, size bit, granularity bit + db 0x0 ; high limit + +gdt_kdata: ; same as gdt_kcode but for the data segment + dw 0xffff ;low limit + dw 0x0 ;low base + db 0x0 ;mid base + db 10010010b ; order: same as code seg. changed for data seg + db 11001111b ; same as kcode + db 0x0 ; high limit + +gdt_end: + +gdt_descriptor: ; describes the gdt to the lgdt register + dw gdt_end - gdt_start - 1 + + dd gdt_start + +CODE_SEG equ gdt_kcode - gdt_start +DATA_SEG equ gdt_kdata - gdt_start \ No newline at end of file -- cgit v1.2.3-70-g09d2