about summary refs log tree commit diff
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.gz
glibc-64d4dea6cdcd908ea43a0eed5fc6262b1c6c205a.tar.xz
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