[MODERN FEATURES] SSE

This commit is contained in:
2017-02-08 15:51:51 +01:00
parent 253cd84a1f
commit 0b27ddca2c
7 changed files with 69 additions and 2 deletions

45
kernel/arch/sse.S Normal file
View File

@@ -0,0 +1,45 @@
#include <registers.h>
.intel_syntax noprefix
.global sse_init
sse_init:
mov rax, cr0
and ax, 0xFFFF-CR0_EM
or ax, CR0_MP
mov cr0, rax
mov rax, cr4
or ax, CR4_OSFXSR
or ax, CR4_OSXMMEXCPT
mov cr4, rax
ret
.global sse_save
sse_save:
movabs rax, offset _sse_buffer
fxsave [rax]
movabs rsi, offset _sse_buffer
mov rdx, 512
call memcpy
ret
.global sse_restore
sse_restore:
mov rsi, rdi
movabs rdi, offset _sse_buffer
mov rdx, 512
call memcpy
movabs rax, offset _sse_buffer
fxrstor [rax]
ret
.section .data
.align 16
_sse_buffer:
.rept 512
.byte 0
.endr