Kernel: Add Other GDT entries to x86_64
This commit is contained in:
parent
f0093ed2fd
commit
6418d7cfc3
|
@ -10,6 +10,19 @@
|
||||||
.set PG_READ_WRITE, 1<<1
|
.set PG_READ_WRITE, 1<<1
|
||||||
.set PG_PAGE_SIZE, 1<<7
|
.set PG_PAGE_SIZE, 1<<7
|
||||||
|
|
||||||
|
# GDT access byte
|
||||||
|
.set GDT_A_A, 1<<40
|
||||||
|
.set GDT_A_RW, 1<<41
|
||||||
|
.set GDT_A_DC, 1<<42
|
||||||
|
.set GDT_A_E, 1<<43
|
||||||
|
.set GDT_A_S, 1<<44
|
||||||
|
.set GDT_A_DPL, 1<<45
|
||||||
|
.set GDT_A_P, 1<<47
|
||||||
|
# GDT flags
|
||||||
|
.set GDT_F_L, 1<<53
|
||||||
|
.set GDT_F_DB, 1<<54
|
||||||
|
.set GDT_F_G, 1<<55
|
||||||
|
|
||||||
.code32
|
.code32
|
||||||
|
|
||||||
# Multiboot header
|
# Multiboot header
|
||||||
|
@ -60,8 +73,11 @@ g_multiboot_magic:
|
||||||
.skip 8
|
.skip 8
|
||||||
|
|
||||||
boot_gdt:
|
boot_gdt:
|
||||||
.quad 0 // null
|
.quad 0 # null descriptor
|
||||||
.quad (1<<53) | (1<<47) | (1<<44) | (1<<43) // kernel code P,S,E,L (present, code/data, executable, long mode)
|
.quad (GDT_F_G | GDT_F_L ) | (GDT_A_P | (0 * GDT_A_DPL) | GDT_A_S | GDT_A_E | GDT_A_RW) | (0xF << 48 | 0xFFFF) # kernel code
|
||||||
|
.quad (GDT_F_G | GDT_F_DB ) | (GDT_A_P | (0 * GDT_A_DPL) | GDT_A_S | GDT_A_RW) | (0xF << 48 | 0xFFFF) # kernel data
|
||||||
|
.quad (GDT_F_G | GDT_F_L ) | (GDT_A_P | (3 * GDT_A_DPL) | GDT_A_S | GDT_A_E | GDT_A_RW) | (0xF << 48 | 0xFFFF) # userspace code
|
||||||
|
.quad (GDT_F_G | GDT_F_DB ) | (GDT_A_P | (3 * GDT_A_DPL) | GDT_A_S | GDT_A_RW) | (0xF << 48 | 0xFFFF) # userspace data
|
||||||
boot_gdtr:
|
boot_gdtr:
|
||||||
.short . - boot_gdt - 1
|
.short . - boot_gdt - 1
|
||||||
.quad boot_gdt
|
.quad boot_gdt
|
||||||
|
|
Loading…
Reference in New Issue