48 lines
1.6 KiB
Diff
48 lines
1.6 KiB
Diff
commit 60cd7123a6c4441a509c22cc1d5da60df2c1dfeb
|
|
Author: Florian Weimer <fweimer@redhat.com>
|
|
Date: Fri Mar 28 09:26:06 2025 +0100
|
|
|
|
x86: Skip XSAVE state size reset if ISA level requires XSAVE
|
|
|
|
If we have to use XSAVE or XSAVEC trampolines, do not adjust the size
|
|
information they need. Technically, it is an operator error to try to
|
|
run with -XSAVE,-XSAVEC on such builds, but this change here disables
|
|
some unnecessary code with higher ISA levels and simplifies testing.
|
|
|
|
Related to commit befe2d3c4dec8be2cdd01a47132e47bdb7020922
|
|
("x86-64: Don't use SSE resolvers for ISA level 3 or above").
|
|
|
|
Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
|
|
(cherry picked from commit 59585ddaa2d44f22af04bb4b8bd4ad1e302c4c02)
|
|
|
|
diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c
|
|
index 3d7c2819d7cc6643..4c535970d10a2d67 100644
|
|
--- a/sysdeps/x86/cpu-features.c
|
|
+++ b/sysdeps/x86/cpu-features.c
|
|
@@ -24,6 +24,7 @@
|
|
#include <dl-cacheinfo.h>
|
|
#include <dl-minsigstacksize.h>
|
|
#include <dl-hwcap2.h>
|
|
+#include <gcc-macros.h>
|
|
|
|
extern void TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *)
|
|
attribute_hidden;
|
|
@@ -1092,6 +1093,9 @@ no_cpuid:
|
|
TUNABLE_CALLBACK (set_prefer_map_32bit_exec));
|
|
#endif
|
|
|
|
+ /* Do not add the logic to disable XSAVE/XSAVEC if this glibc build
|
|
+ requires AVX and therefore XSAVE or XSAVEC support. */
|
|
+#ifndef GCCMACRO__AVX__
|
|
bool disable_xsave_features = false;
|
|
|
|
if (!CPU_FEATURE_USABLE_P (cpu_features, OSXSAVE))
|
|
@@ -1145,6 +1149,7 @@ no_cpuid:
|
|
|
|
CPU_FEATURE_UNSET (cpu_features, FMA4);
|
|
}
|
|
+#endif
|
|
|
|
#ifdef __x86_64__
|
|
GLRO(dl_hwcap) = HWCAP_X86_64;
|