Luna/kernel/src/arch/x86_64/CPU.asm

48 lines
882 B
NASM
Raw Normal View History

2022-11-15 18:10:32 +00:00
global enable_sse
enable_sse:
mov rax, cr0
and ax, 0xFFFB ;clear coprocessor emulation CR0.EM
or ax, 0x2 ;set coprocessor monitoring CR0.MP
mov cr0, rax
mov rax, cr4
or ax, 3 << 9 ;set CR4.OSFXSR and CR4.OSXMMEXCPT at the same time
mov cr4, rax
ret
global enable_write_protect
enable_write_protect:
mov rax, cr0
or eax, 0x80000 ;set write-protect CR0.WP
mov cr0, rax
ret
global enable_nx
enable_nx:
mov rcx, 0xC0000080 ; IA32_EFER
rdmsr
or eax, 1 << 11 ; no-execute enable (NXE)
wrmsr
ret
global load_gdt
load_gdt:
cli
lgdt [rdi]
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
mov ss, ax
push 0x08
lea rax, [rel .reload_CS]
push rax
retfq
.reload_CS:
ret
global load_tr
load_tr:
mov rax, rdi
ltr ax
2022-11-15 18:10:32 +00:00
ret