mirror of
git://sourceware.org/git/glibc.git
synced 2025-02-05 12:40:55 +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>
|
2017-08-04 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* sysdeps/i386/i686/multiarch/Makefile (sysdep_routines): Add
|
* 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_Use_dl_runtime_resolve_slow FEATURE_INDEX_1*FEATURE_SIZE
|
||||||
# define index_arch_Prefer_No_AVX512 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__ */
|
#else /* __ASSEMBLER__ */
|
||||||
|
|
||||||
enum
|
enum
|
||||||
|
Loading…
Reference in New Issue
Block a user