[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH gnumach 1/2] Revert "fpu: Fix cpuid feature detection"
From: |
Olivier Valentin |
Subject: |
[PATCH gnumach 1/2] Revert "fpu: Fix cpuid feature detection" |
Date: |
Thu, 8 Feb 2024 17:50:14 +0100 |
This reverts commit f8d0f98e80b3d7d9b24fa077818113fb0f4b3970.
---
i386/i386/fpu.c | 40 +++++++++++++++++++++++++---------------
1 file changed, 25 insertions(+), 15 deletions(-)
diff --git a/i386/i386/fpu.c b/i386/i386/fpu.c
index 9bf5aecf..fefe5e49 100644
--- a/i386/i386/fpu.c
+++ b/i386/i386/fpu.c
@@ -174,26 +174,36 @@ init_fpu(void)
set_xcr0(fp_xsave_support);
#endif /* MACH_RING1 */
- fp_xsave_size = offsetof(struct i386_fpsave_state,
xfp_save_state) + ebx;
-
- if (fp_xsave_size < sizeof(struct i386_fpsave_state))
- panic("CPU-provided xstate size %d "
- "is smaller than our minimum %d!\n",
- fp_xsave_size,
- (int) sizeof(struct i386_fpsave_state));
-
eax = 0xd;
ecx = 0x1;
cpuid(eax, ebx, ecx, edx);
+ if (eax & CPU_FEATURE_XSAVES) {
+ fp_xsave_size = offsetof(struct i386_fpsave_state,
xfp_save_state) + ebx;
+ if (fp_xsave_size < sizeof(struct i386_fpsave_state))
+ panic("CPU-provided xstate size %d "
+ "is smaller than our minimum %d!\n",
+ fp_xsave_size,
+ (int) sizeof(struct i386_fpsave_state));
- if (eax & CPU_FEATURE_XSAVES)
fp_save_kind = FP_XSAVES;
- else if (eax & CPU_FEATURE_XSAVEOPT)
- fp_save_kind = FP_XSAVEOPT;
- else if (eax & CPU_FEATURE_XSAVEC)
- fp_save_kind = FP_XSAVEC;
- else
- fp_save_kind = FP_XSAVE;
+ } else {
+ eax = 0xd;
+ ecx = 0x0;
+ cpuid(eax, ebx, ecx, edx);
+ fp_xsave_size = offsetof(struct i386_fpsave_state,
xfp_save_state) + ebx;
+ if(fp_xsave_size < sizeof(struct i386_fpsave_state))
+ panic("CPU-provided xstate size %d "
+ "is smaller than our minimum %d!\n",
+ fp_xsave_size,
+ (int) sizeof(struct i386_fpsave_state));
+
+ if (eax & CPU_FEATURE_XSAVEOPT)
+ fp_save_kind = FP_XSAVEOPT;
+ else if (eax & CPU_FEATURE_XSAVEC)
+ fp_save_kind = FP_XSAVEC;
+ else
+ fp_save_kind = FP_XSAVE;
+ }
fp_kind = FP_387X;
}
--
2.40.1