diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2017-10-13 09:56:49 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2017-11-29 16:21:27 -0200 |
commit | 1cbd7bfe65e4fafdf77cccccf67950d2b5570d4a (patch) | |
tree | 49aca2fc8c969ae0d8ec99e9cd4e8aef44a4eb57 /sysdeps/sparc/sparc-ifunc.h | |
parent | aa1142c593447b433208a79bd5a95095cd5dd892 (diff) | |
download | glibc-1cbd7bfe65e4fafdf77cccccf67950d2b5570d4a.tar.gz |
sparc: refactor sparc64 signbit{f} selector to C
This patch refactors the sparc64 ifunc selector to a C implementation.
Also, the generic symbol is moved to its own implementation file
(s_signbit{f}-generic.S).
It also simplifies the multiarch Makefile by moving the common objects
from libm-sysdeps_routines and sysdeps_routines to a new sysdeps_call
rule and including it where required with the correct prefix.
Checked on sparc64-linux-gnu and sparcv9-linux-gnu.
* sysdeps/sparc/sparc-ifunc.h (sparc_libm_ifunc_redirected): New
macro.
* sysdeps/sparc/sparc64/fpu/multiarch/Makefile (sysdep_calls): New
rule.
(sysdep_routines): Use sysdep_calls as base.
(libm-sysdep_routines): Add generic rule for symbols shared with
libc. Add s_signbit-generic and s_signbitf-generic objects.
* sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.c: New file.
* sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.c: Likewise.
* sysdeps/sparc/sparc64/fpu/multiarch/s_signbit-generic.S: Likewise.
* sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf-generic.S: Likewise.
* sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.S: Remove file.
* sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.S: Likewise.
Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Diffstat (limited to 'sysdeps/sparc/sparc-ifunc.h')
-rw-r--r-- | sysdeps/sparc/sparc-ifunc.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sysdeps/sparc/sparc-ifunc.h b/sysdeps/sparc/sparc-ifunc.h index 54420d8ed0..4a68cf1583 100644 --- a/sysdeps/sparc/sparc-ifunc.h +++ b/sysdeps/sparc/sparc-ifunc.h @@ -158,6 +158,9 @@ END (__##name) # define sparc_libc_ifunc(name, expr) sparc_libm_ifunc (name, expr) +# define sparc_libm_ifunc_redirected(redirected_name, name, expr) \ + __ifunc (redirected_name, name, expr, int hwcap, libm_ifunc_init) + /* It essentially does libc_hidden_builtin_def (name) and redirect the internal redirected symbol to ifunc implementation. */ # if defined SHARED |