diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2020-12-06 22:06:32 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2020-12-06 22:06:32 +0100 |
commit | c924edb91ddb256ebe7a3654697494ac30eff8da (patch) | |
tree | f1916441267ebad17c1df1d24678ba4f523a4d98 | |
parent | d15439ee765ec027db49777ebd9760be20ba3b31 (diff) | |
parent | 23b52bbf23bcc3f7f64b4d3496993bee83f5f2eb (diff) | |
download | plan9front-c924edb91ddb256ebe7a3654697494ac30eff8da.tar.xz |
merge
-rw-r--r-- | sys/src/9/pc64/fpu.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/sys/src/9/pc64/fpu.c b/sys/src/9/pc64/fpu.c index 2b9a377b7..1a5f31251 100644 --- a/sys/src/9/pc64/fpu.c +++ b/sys/src/9/pc64/fpu.c @@ -253,25 +253,26 @@ fpuinit(void) 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; } } |