Page MenuHomeFreeBSD

D44497.diff
No OneTemporary

D44497.diff

diff --git a/sys/amd64/amd64/fpu.c b/sys/amd64/amd64/fpu.c
--- a/sys/amd64/amd64/fpu.c
+++ b/sys/amd64/amd64/fpu.c
@@ -233,9 +233,12 @@
DEFINE_IFUNC(, void, fpusave, (void *))
{
+ u_int cp[4];
+
if (!use_xsave)
return (fpusave_fxsave);
- if ((cpu_stdext_feature & CPUID_EXTSTATE_XSAVEOPT) != 0) {
+ cpuid_count(0xd, 0x1, cp);
+ if ((cp[0] & CPUID_EXTSTATE_XSAVEOPT) != 0) {
return ((cpu_stdext_feature & CPUID_STDEXT_NFPUSG) != 0 ?
fpusave_xsaveopt64 : fpusave_xsaveopt3264);
}
diff --git a/sys/i386/i386/npx.c b/sys/i386/i386/npx.c
--- a/sys/i386/i386/npx.c
+++ b/sys/i386/i386/npx.c
@@ -315,9 +315,13 @@
DEFINE_IFUNC(, void, fpusave, (union savefpu *))
{
- if (use_xsave)
- return ((cpu_stdext_feature & CPUID_EXTSTATE_XSAVEOPT) != 0 ?
+ u_int cp[4];
+
+ if (use_xsave) {
+ cpuid_count(0xd, 0x1, cp);
+ return ((cp[0] & CPUID_EXTSTATE_XSAVEOPT) != 0 ?
fpusave_xsaveopt : fpusave_xsave);
+ }
if (cpu_fxsr)
return (fpusave_fxsave);
return (fpusave_fnsave);

File Metadata

Mime Type
text/plain
Expires
Sun, Dec 21, 3:13 PM (8 h, 49 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27114968
Default Alt Text
D44497.diff (1000 B)

Event Timeline