Clear x86_default_fpu STX/MMX register state at boot
[akaros.git] / kern / arch / x86 / smp_boot.c
index f58e7c0..efb11e2 100644 (file)
@@ -24,6 +24,7 @@
 #include <kmalloc.h>
 #include <cpu_feat.h>
 #include <arch/fsgsbase.h>
+#include <ros/procinfo.h>
 
 #include "vmm/vmm.h"
 
@@ -288,18 +289,18 @@ void __arch_pcpu_init(uint32_t coreid)
        /*
         * Enable SSE instructions.
         * CR4.OSFXSR enables SSE and ensures that MXCSR/XMM gets saved with FXSAVE
-        * CR4.OSXSAVE enables XSAVE instructions. Only set if XSAVEOPT supported.
+        * CR4.OSXSAVE enables XSAVE instructions. Only set if XSAVE supported.
         * CR4.OSXMME indicates OS support for software exception handlers for
         * SIMD floating-point exceptions (turn it on to get #XM exceptions
         * in the event of a SIMD error instead of #UD exceptions).
         */
        lcr4(rcr4() | CR4_OSFXSR | CR4_OSXMME);
 
-       if (cpu_has_feat(CPU_FEAT_X86_XSAVEOPT)) {
+       if (cpu_has_feat(CPU_FEAT_X86_XSAVE)) {
                // You MUST set CR4.OSXSAVE before loading xcr0
                lcr4(rcr4() | CR4_OSXSAVE);
                // Set xcr0 to the Akaros-wide default
-               lxcr0(x86_default_xcr0);
+               lxcr0(__proc_global_info.x86_default_xcr0);
        }
 
        // Initialize fpu and extended state by restoring our default XSAVE area.