From 9e895e52866ac5358e2f78c6040638c65987ff94 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Fri, 27 Jun 2025 21:50:37 +0300 Subject: [PATCH] Kernel: Use fxsave64 and fxrstor64 on 64 bit target --- kernel/kernel/Thread.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/kernel/kernel/Thread.cpp b/kernel/kernel/Thread.cpp index ebf7df66e5..fb0f838ff3 100644 --- a/kernel/kernel/Thread.cpp +++ b/kernel/kernel/Thread.cpp @@ -55,7 +55,13 @@ namespace Kernel asm volatile( "finit;" "ldmxcsr %[mxcsr];" +#if ARCH(x86_64) + "fxsave64 %[storage];" +#elif ARCH(i686) "fxsave %[storage];" +#else +#error +#endif : [storage]"=m"(s_default_sse_storage) : [mxcsr]"m"(mxcsr) ); @@ -670,12 +676,24 @@ namespace Kernel void Thread::save_sse() { +#if ARCH(x86_64) + asm volatile("fxsave64 %0" :: "m"(m_sse_storage)); +#elif ARCH(i686) asm volatile("fxsave %0" :: "m"(m_sse_storage)); +#else +#error +#endif } void Thread::load_sse() { +#if ARCH(x86_64) + asm volatile("fxrstor64 %0" :: "m"(m_sse_storage)); +#elif ARCH(i686) asm volatile("fxrstor %0" :: "m"(m_sse_storage)); +#else +#error +#endif } }