ref: 3bc56279fa00fe3f747d87a1814602c72ff01b7a
parent: 95fe2f4276f5fed67fb158da20314b60bcbbf279
parent: ea26e7d5616bab06d57a80b6b5086c82323277c1
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sun Dec 6 17:06:32 EST 2020
merge
--- a/sys/src/9/pc64/fpu.c
+++ b/sys/src/9/pc64/fpu.c
@@ -253,25 +253,26 @@
ulong regs[4];
cr4 = getcr4() | CR4Osfxsr|CR4Oxmmex;
- putcr4(cr4);
- fpsave = fpssesave;
- fprestore = fpsserestore;
-
if((m->cpuidcx & (Xsave|Avx)) == (Xsave|Avx) && getconf("*noavx") == nil){cr4 |= CR4Oxsave;
putcr4(cr4);
m->xcr0 = 7; /* x87, sse, avx */
putxcr0(m->xcr0);
- fpsave = fpxsave;
- fprestore = fpxrestore;
-
cpuid(0xd, 1, regs);
- if(regs[0] & Xsaveopt)
- fpsave = fpxsaveopt;
if(regs[0] & Xsaves){fpsave = fpxsaves;
fprestore = fpxrestores;
+ } else {+ if(regs[0] & Xsaveopt)
+ fpsave = fpxsaveopt;
+ else
+ fpsave = fpxsave;
+ fprestore = fpxrestore;
}
+ } else {+ putcr4(cr4);
+ fpsave = fpssesave;
+ fprestore = fpsserestore;
}
}
--
⑨