Continuing the cleanups of libgcc soft-fp configuration for powerpc*-*-linux* in preparation for implementing TARGET_ATOMIC_ASSIGN_EXPAND_FENV for soft-float and e500, this patch optimizes the choice of which functions to build for the e500 cases. For e500v2, use of hardfp is generally right, except that calls to __unordsf2 and __unorddf2 are actually generated by GCC from __builtin_isunordered and so they need to be implemented with soft-fp to avoid recursively calling themselves. For e500v1, hardfp is right for SFmode (except for __unordsf2) but soft-fp for DFmode (and when using soft-fp, as usual it's best for the conversions between DFmode and integers all to come directly from soft-fp rather than some coming from libgcc2.c). Thus, new variables hardfp_exclusions and softfp_extras are added that configurations using t-hardfp and t-softfp can use to achieve the desired effect of selectively mixing the two sources of functions. Tested with no regressions for crosses to powerpc-linux-gnuspe (both e500v1 and e500v2); also checked that the same set of symbols and versions is exported from shared libgcc before and after the patch. * config/t-hardfp (hardfp_exclusions): Document new variable for user to define. (hardfp_func_list): Exclude functions from $(hardfp_exclusions). * config/t-softfp (softfp_extras): Document new variable for user to define. (softfp_func_list): Add functions from $(softfp_extras). * config/rs6000/t-e500v1-fp, config/rs6000/t-e500v2-fp: New files. * config.host (powerpc*-*-linux*): For e500v1, use rs6000/t-e500v1-fp and t-hardfp; do not use t-softfp-sfdf and t-softfp-excl. For e500v2, use t-hardfp-sfdf, rs6000/t-e500v2-fp and t-hardfp; do not use t-softfp-sfdf and t-softfp-excl. From-SVN: r216835
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
config | Loading commit data... | |
soft-fp | Loading commit data... | |
ChangeLog | Loading commit data... | |
Makefile.in | Loading commit data... | |
config.host | Loading commit data... | |
config.in | Loading commit data... | |
configure | Loading commit data... | |
configure.ac | Loading commit data... | |
crtstuff.c | Loading commit data... | |
dfp-bit.c | Loading commit data... | |
dfp-bit.h | Loading commit data... | |
divmod.c | Loading commit data... | |
empty.mk | Loading commit data... | |
emutls.c | Loading commit data... | |
enable-execute-stack-empty.c | Loading commit data... | |
enable-execute-stack-mprotect.c | Loading commit data... | |
fixed-bit.c | Loading commit data... | |
fixed-bit.h | Loading commit data... | |
fixed-obj.mk | Loading commit data... | |
floatunsidf.c | Loading commit data... | |
floatunsisf.c | Loading commit data... | |
floatunsitf.c | Loading commit data... | |
floatunsixf.c | Loading commit data... | |
fp-bit.c | Loading commit data... | |
fp-bit.h | Loading commit data... | |
gbl-ctors.h | Loading commit data... | |
gen-fixed.sh | Loading commit data... | |
generic-morestack-thread.c | Loading commit data... | |
generic-morestack.c | Loading commit data... | |
generic-morestack.h | Loading commit data... | |
gstdint.h | Loading commit data... | |
gthr-posix.h | Loading commit data... | |
gthr-single.h | Loading commit data... | |
gthr.h | Loading commit data... | |
libgcc-std.ver.in | Loading commit data... | |
libgcc2.c | Loading commit data... | |
libgcc2.h | Loading commit data... | |
libgcov-driver-system.c | Loading commit data... | |
libgcov-driver.c | Loading commit data... | |
libgcov-interface.c | Loading commit data... | |
libgcov-merge.c | Loading commit data... | |
libgcov-profiler.c | Loading commit data... | |
libgcov-util.c | Loading commit data... | |
libgcov.h | Loading commit data... | |
memcmp.c | Loading commit data... | |
memcpy.c | Loading commit data... | |
memmove.c | Loading commit data... | |
memset.c | Loading commit data... | |
mkheader.sh | Loading commit data... | |
mkmap-flat.awk | Loading commit data... | |
mkmap-symver.awk | Loading commit data... | |
shared-object.mk | Loading commit data... | |
siditi-object.mk | Loading commit data... | |
static-object.mk | Loading commit data... | |
sync.c | Loading commit data... | |
udivmod.c | Loading commit data... | |
udivmodsi4.c | Loading commit data... | |
unwind-arm-common.inc | Loading commit data... | |
unwind-c.c | Loading commit data... | |
unwind-compat.c | Loading commit data... | |
unwind-compat.h | Loading commit data... | |
unwind-dw2-fde-compat.c | Loading commit data... | |
unwind-dw2-fde-dip.c | Loading commit data... | |
unwind-dw2-fde.c | Loading commit data... | |
unwind-dw2-fde.h | Loading commit data... | |
unwind-dw2.c | Loading commit data... | |
unwind-dw2.h | Loading commit data... | |
unwind-generic.h | Loading commit data... | |
unwind-pe.h | Loading commit data... | |
unwind-seh.c | Loading commit data... | |
unwind-sjlj.c | Loading commit data... | |
unwind.inc | Loading commit data... | |
vtv_end.c | Loading commit data... | |
vtv_end_preinit.c | Loading commit data... | |
vtv_start.c | Loading commit data... | |
vtv_start_preinit.c | Loading commit data... |