mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-24 02:03:35 +08:00
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.
This commit is contained in:
parent
973da22a35
commit
64d4dea6cd
@ -1,3 +1,9 @@
|
||||
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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user