aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2018-09-20 12:43:41 +0000
committerJoseph Myers <joseph@codesourcery.com>2018-09-20 12:43:41 +0000
commitd90c9b1a121295a5e31810b899ab637f68898857 (patch)
treea791eb9d53c27f6c53907ef83acab822794f0da0
parentdb9a8ad4ff3fc58e3773a9a4d0cabe3c1bc9c94c (diff)
downloadglibc-d90c9b1a121295a5e31810b899ab637f68898857.tar
glibc-d90c9b1a121295a5e31810b899ab637f68898857.tar.gz
glibc-d90c9b1a121295a5e31810b899ab637f68898857.tar.bz2
glibc-d90c9b1a121295a5e31810b899ab637f68898857.zip
Invert sense of list of i686-class processors in sysdeps/x86/cpu-features.h.
I noticed that sysdeps/x86/cpu-features.h had conditionals on whether to define HAS_CPUID, HAS_I586 and HAS_I686 with a long list of preprocessor macros for i686-and-later processors which however was out of date. This patch avoids the problem of the list getting out of date by instead having conditionals on all the (few, old) pre-i686 processors for which GCC has preprocessor macros, rather than the (many, expanding list) i686-and-later processors. It seems HAS_I586 and HAS_I686 are unused so the only effect of these macros being missing is that 32-bit glibc built for one of these processors would end up doing runtime detection of CPUID availability. i386 builds are prevented by a configure test so there is no need to allow for them here. __geode__ (no long nops?) and __k6__ (no CMOV, at least according to GCC) are conservatively handled as i586, not i686, here (as noted above, this is a theoretical distinction at present in that only HAS_CPUID appears to be used). Tested for x86. * sysdeps/x86/cpu-features.h [__geode__ || __k6__]: Handle like [__i586__ || __pentium__]. [__i486__]: Handle explicitly. (HAS_CPUID): Define to 1 if above macros are undefined. (HAS_I586): Likewise. (HAS_I686): Likewise.
-rw-r--r--ChangeLog9
-rw-r--r--sysdeps/x86/cpu-features.h25
2 files changed, 16 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index 8942396893..fc3fbffa23 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2018-09-20 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/x86/cpu-features.h [__geode__ || __k6__]: Handle like
+ [__i586__ || __pentium__].
+ [__i486__]: Handle explicitly.
+ (HAS_CPUID): Define to 1 if above macros are undefined.
+ (HAS_I586): Likewise.
+ (HAS_I686): Likewise.
+
2018-09-20 Florian Weimer <fweimer@redhat.com>
* misc/tst-gethostid.c: New file.
diff --git a/sysdeps/x86/cpu-features.h b/sysdeps/x86/cpu-features.h
index d342664c64..fb22d7b9d6 100644
--- a/sysdeps/x86/cpu-features.h
+++ b/sysdeps/x86/cpu-features.h
@@ -257,30 +257,19 @@ extern const struct cpu_features *__get_cpu_features (void)
#ifdef __x86_64__
# define HAS_CPUID 1
-#elif defined __i586__ || defined __pentium__
+#elif (defined __i586__ || defined __pentium__ \
+ || defined __geode__ || defined __k6__)
# define HAS_CPUID 1
# define HAS_I586 1
# define HAS_I686 HAS_ARCH_FEATURE (I686)
-#elif (defined __i686__ || defined __pentiumpro__ \
- || defined __pentium4__ || defined __nocona__ \
- || defined __atom__ || defined __core2__ \
- || defined __corei7__ || defined __corei7_avx__ \
- || defined __core_avx2__ || defined __nehalem__ \
- || defined __sandybridge__ || defined __haswell__ \
- || defined __knl__ || defined __bonnell__ \
- || defined __silvermont__ \
- || defined __k6__ || defined __k8__ \
- || defined __athlon__ || defined __amdfam10__ \
- || defined __bdver1__ || defined __bdver2__ \
- || defined __bdver3__ || defined __bdver4__ \
- || defined __btver1__ || defined __btver2__)
-# define HAS_CPUID 1
-# define HAS_I586 1
-# define HAS_I686 1
-#else
+#elif defined __i486__
# define HAS_CPUID 0
# define HAS_I586 HAS_ARCH_FEATURE (I586)
# define HAS_I686 HAS_ARCH_FEATURE (I686)
+#else
+# define HAS_CPUID 1
+# define HAS_I586 1
+# define HAS_I686 1
#endif
#endif /* cpu_features_h */