diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c index 975b75c68b..051d8c2536 100644 --- a/sysdeps/x86/cpu-features.c +++ b/sysdeps/x86/cpu-features.c @@ -18,6 +18,7 @@ #include #include +#include #include #include #include @@ -1116,7 +1117,9 @@ no_cpuid: TUNABLE_CALLBACK (set_x86_shstk)); #endif +#if MINIMUM_X86_ISA_LEVEL < AVX_X86_ISA_LEVEL if (GLRO(dl_x86_cpu_features).xsave_state_size != 0) +#endif { if (CPU_FEATURE_USABLE_P (cpu_features, XSAVEC)) { @@ -1137,22 +1140,24 @@ no_cpuid: #endif } } +#if MINIMUM_X86_ISA_LEVEL < AVX_X86_ISA_LEVEL else { -#ifdef __x86_64__ +# ifdef __x86_64__ GLRO(dl_x86_64_runtime_resolve) = _dl_runtime_resolve_fxsave; -# ifdef SHARED +# ifdef SHARED GLRO(dl_x86_tlsdesc_dynamic) = _dl_tlsdesc_dynamic_fxsave; -# endif -#else -# ifdef SHARED +# endif +# else +# ifdef SHARED if (CPU_FEATURE_USABLE_P (cpu_features, FXSR)) GLRO(dl_x86_tlsdesc_dynamic) = _dl_tlsdesc_dynamic_fxsave; else GLRO(dl_x86_tlsdesc_dynamic) = _dl_tlsdesc_dynamic_fnsave; +# endif # endif -#endif } +#endif #ifndef SHARED /* NB: In libc.a, call init_cacheinfo. */ diff --git a/sysdeps/x86_64/dl-tlsdesc.S b/sysdeps/x86_64/dl-tlsdesc.S index 1b80dd8a8c..a8889cdfd0 100644 --- a/sysdeps/x86_64/dl-tlsdesc.S +++ b/sysdeps/x86_64/dl-tlsdesc.S @@ -20,6 +20,7 @@ #include #include #include +#include #include "tlsdesc.h" /* Area on stack to save and restore registers used for parameter @@ -78,12 +79,14 @@ _dl_tlsdesc_undefweak: .size _dl_tlsdesc_undefweak, .-_dl_tlsdesc_undefweak #ifdef SHARED -# define USE_FXSAVE -# define STATE_SAVE_ALIGNMENT 16 -# define _dl_tlsdesc_dynamic _dl_tlsdesc_dynamic_fxsave -# include "dl-tlsdesc-dynamic.h" -# undef _dl_tlsdesc_dynamic -# undef USE_FXSAVE +# if MINIMUM_X86_ISA_LEVEL < AVX_X86_ISA_LEVEL +# define USE_FXSAVE +# define STATE_SAVE_ALIGNMENT 16 +# define _dl_tlsdesc_dynamic _dl_tlsdesc_dynamic_fxsave +# include "dl-tlsdesc-dynamic.h" +# undef _dl_tlsdesc_dynamic +# undef USE_FXSAVE +# endif # define USE_XSAVE # define STATE_SAVE_ALIGNMENT 64