aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2017-08-04 13:38:05 -0700
committerH.J. Lu <hjl.tools@gmail.com>2017-08-04 13:38:20 -0700
commit64d4dea6cdcd908ea43a0eed5fc6262b1c6c205a (patch)
tree702c3af7a755668fabc7dd3ecc84169d1a2c9410
parent973da22a356ed072133562e6f1ecd833c31fa9a0 (diff)
downloadglibc-64d4dea6cdcd908ea43a0eed5fc6262b1c6c205a.tar
glibc-64d4dea6cdcd908ea43a0eed5fc6262b1c6c205a.tar.gz
glibc-64d4dea6cdcd908ea43a0eed5fc6262b1c6c205a.tar.bz2
glibc-64d4dea6cdcd908ea43a0eed5fc6262b1c6c205a.zip
x86: Remove assembly versions of HAS_CPU_FEATURE/HAS_ARCH_FEATURE
Since all x86 IFUNC selectors are implemented in C, assembly versions of HAS_CPU_FEATURE and HAS_ARCH_FEATURE can be removed. * sysdeps/x86/cpu-features.h [__ASSEMBLER__] (LOAD_RTLD_GLOBAL_RO_RDX, HAS_FEATURE, LOAD_FUNC_GOT_EAX, HAS_CPU_FEATURE, HAS_ARCH_FEATURE): Removed.
-rw-r--r--ChangeLog6
-rw-r--r--sysdeps/x86/cpu-features.h57
2 files changed, 6 insertions, 57 deletions
diff --git a/ChangeLog b/ChangeLog
index db25c7fa11..0909e4d77a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2017-08-04 H.J. Lu <hongjiu.lu@intel.com>
+ * sysdeps/x86/cpu-features.h [__ASSEMBLER__]
+ (LOAD_RTLD_GLOBAL_RO_RDX, HAS_FEATURE, LOAD_FUNC_GOT_EAX,
+ HAS_CPU_FEATURE, HAS_ARCH_FEATURE): Removed.
+
+2017-08-04 H.J. Lu <hongjiu.lu@intel.com>
+
* sysdeps/i386/i686/multiarch/Makefile (sysdep_routines): Add
bcopy-ia32, bzero-ia32, rawmemchr-ia32 memchr-ia32,
memcmp-ia32, memcpy-ia32, memmove-ia32, mempcpy-ia32,
diff --git a/sysdeps/x86/cpu-features.h b/sysdeps/x86/cpu-features.h
index 3ed67f5800..af52689123 100644
--- a/sysdeps/x86/cpu-features.h
+++ b/sysdeps/x86/cpu-features.h
@@ -127,63 +127,6 @@
# define index_arch_Use_dl_runtime_resolve_slow FEATURE_INDEX_1*FEATURE_SIZE
# define index_arch_Prefer_No_AVX512 FEATURE_INDEX_1*FEATURE_SIZE
-
-# if defined (_LIBC) && !IS_IN (nonlib)
-# ifdef __x86_64__
-# ifdef SHARED
-# if IS_IN (rtld)
-# define LOAD_RTLD_GLOBAL_RO_RDX
-# define HAS_FEATURE(offset, field, name) \
- testl $(bit_##field##_##name), \
- _rtld_local_ro+offset+(index_##field##_##name)(%rip)
-# else
-# define LOAD_RTLD_GLOBAL_RO_RDX \
- mov _rtld_global_ro@GOTPCREL(%rip), %RDX_LP
-# define HAS_FEATURE(offset, field, name) \
- testl $(bit_##field##_##name), \
- RTLD_GLOBAL_RO_DL_X86_CPU_FEATURES_OFFSET+offset+(index_##field##_##name)(%rdx)
-# endif
-# else /* SHARED */
-# define LOAD_RTLD_GLOBAL_RO_RDX
-# define HAS_FEATURE(offset, field, name) \
- testl $(bit_##field##_##name), \
- _dl_x86_cpu_features+offset+(index_##field##_##name)(%rip)
-# endif /* !SHARED */
-# else /* __x86_64__ */
-# ifdef SHARED
-# define LOAD_FUNC_GOT_EAX(func) \
- leal func@GOTOFF(%edx), %eax
-# if IS_IN (rtld)
-# define LOAD_GOT_AND_RTLD_GLOBAL_RO \
- LOAD_PIC_REG(dx)
-# define HAS_FEATURE(offset, field, name) \
- testl $(bit_##field##_##name), \
- offset+(index_##field##_##name)+_rtld_local_ro@GOTOFF(%edx)
-# else
-# define LOAD_GOT_AND_RTLD_GLOBAL_RO \
- LOAD_PIC_REG(dx); \
- mov _rtld_global_ro@GOT(%edx), %ecx
-# define HAS_FEATURE(offset, field, name) \
- testl $(bit_##field##_##name), \
- RTLD_GLOBAL_RO_DL_X86_CPU_FEATURES_OFFSET+offset+(index_##field##_##name)(%ecx)
-# endif
-# else /* SHARED */
-# define LOAD_FUNC_GOT_EAX(func) \
- leal func, %eax
-# define LOAD_GOT_AND_RTLD_GLOBAL_RO
-# define HAS_FEATURE(offset, field, name) \
- testl $(bit_##field##_##name), \
- _dl_x86_cpu_features+offset+(index_##field##_##name)
-# endif /* !SHARED */
-# endif /* !__x86_64__ */
-# else /* _LIBC && !nonlib */
-# error "Sorry, <cpu-features.h> is unimplemented for assembler"
-# endif /* !_LIBC || nonlib */
-
-/* HAS_* evaluates to true if we may use the feature at runtime. */
-# define HAS_CPU_FEATURE(name) HAS_FEATURE (CPUID_OFFSET, cpu, name)
-# define HAS_ARCH_FEATURE(name) HAS_FEATURE (FEATURE_OFFSET, arch, name)
-
#else /* __ASSEMBLER__ */
enum