ptos/amd64: cpu: Load our own GDT
Signed-off-by: Chloe M <chloe@mensia.org>
This commit is contained in:
@@ -9,6 +9,89 @@
|
|||||||
.text
|
.text
|
||||||
.globl MdBspEntry
|
.globl MdBspEntry
|
||||||
MdBspEntry:
|
MdBspEntry:
|
||||||
cli
|
cli /* Disable interrupts on startup */
|
||||||
hlt
|
cld /* Just in case, can't predict the state */
|
||||||
jmp MdBspEntry
|
xor %rbp, %rbp /* Terminate callstack for traces */
|
||||||
|
|
||||||
|
lea g_GDTR(%rip), %rdi
|
||||||
|
call MdGdtLoad
|
||||||
|
1: hlt
|
||||||
|
jmp 1b
|
||||||
|
|
||||||
|
.text
|
||||||
|
.globl MdGdtLoad
|
||||||
|
MdGdtLoad:
|
||||||
|
push %r12
|
||||||
|
push %r13
|
||||||
|
push %r14
|
||||||
|
push %r15
|
||||||
|
push %rbx
|
||||||
|
push %rbp
|
||||||
|
|
||||||
|
lgdt (%rdi)
|
||||||
|
push $0x08
|
||||||
|
lea 1f(%rip), %rbx
|
||||||
|
push %rbx
|
||||||
|
lretq
|
||||||
|
1: mov $0x10, %ax
|
||||||
|
mov %ax, %ds
|
||||||
|
mov %ax, %es
|
||||||
|
mov %ax, %ss
|
||||||
|
mov %ax, %fs
|
||||||
|
xor %ax, %ax
|
||||||
|
mov %ax, %gs
|
||||||
|
|
||||||
|
pop %rbp
|
||||||
|
pop %rbx
|
||||||
|
pop %r15
|
||||||
|
pop %r14
|
||||||
|
pop %r13
|
||||||
|
pop %r12
|
||||||
|
retq
|
||||||
|
|
||||||
|
.section .data
|
||||||
|
.globl g_GDT
|
||||||
|
g_GDT:
|
||||||
|
.NULL:
|
||||||
|
.word 0x0000
|
||||||
|
.word 0x0000
|
||||||
|
.byte 0x00
|
||||||
|
.byte 0b00000000
|
||||||
|
.byte 0b00000000
|
||||||
|
.byte 0x00
|
||||||
|
.CODE:
|
||||||
|
.word 0x0000
|
||||||
|
.word 0x0000
|
||||||
|
.byte 0x00
|
||||||
|
.byte 0b10011010
|
||||||
|
.byte 0b00100000
|
||||||
|
.byte 0x00
|
||||||
|
.DATA:
|
||||||
|
.word 0x0000
|
||||||
|
.word 0x0000
|
||||||
|
.byte 0x00
|
||||||
|
.byte 0b10010010
|
||||||
|
.byte 0b00000000
|
||||||
|
.byte 0x00
|
||||||
|
.UCODE:
|
||||||
|
.word 0x0000
|
||||||
|
.word 0x0000
|
||||||
|
.byte 0x00
|
||||||
|
.byte 0b11111010
|
||||||
|
.byte 0b10101111
|
||||||
|
.byte 0x00
|
||||||
|
.UDATA:
|
||||||
|
.word 0x0000
|
||||||
|
.word 0x0000
|
||||||
|
.byte 0x00
|
||||||
|
.byte 0b11110010
|
||||||
|
.byte 0b00000000
|
||||||
|
.byte 0x00
|
||||||
|
.TSS:
|
||||||
|
.quad 0x00
|
||||||
|
.quad 0x00
|
||||||
|
|
||||||
|
.globl g_GDTR
|
||||||
|
g_GDTR:
|
||||||
|
.word g_GDTR - g_GDT
|
||||||
|
.quad g_GDT
|
||||||
|
|||||||
Reference in New Issue
Block a user