Use the compiler-rt version __{u,}divsi3 and __{u,}modsi3 on ARM EABI

This commit is contained in:
Andrew Turner 2013-01-19 04:11:45 +00:00
parent 2aebb6cefe
commit bb41cbb27c
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=245651
5 changed files with 34 additions and 8 deletions

View File

@ -8,3 +8,9 @@ SOFTFLOAT_BITS=32
# Long double is just double precision.
MDSRCS+=machdep_ldisd.c
SYM_MAPS+=${.CURDIR}/arm/Symbol.map
.if ${MK_ARM_EABI} == "no"
# This contains the symbols that were removed when moving to the ARM EABI
SYM_MAPS+=${.CURDIR}/arm/Symbol_oabi.map
.endif

View File

@ -46,10 +46,6 @@ FBSDprivate_1.0 {
_set_tp;
__aeabi_read_tp;
___longjmp;
__umodsi3;
__modsi3;
__udivsi3;
__divsi3;
__makecontext;
__longjmp;
signalcontext;

View File

@ -0,0 +1,16 @@
/*
* $FreeBSD$
*/
/*
* This only needs to contain symbols that are not listed in
* symbol maps from other parts of libc (i.e., not found in
* stdlib/Symbol.map, string/Symbol.map, sys/Symbol.map, ...)
* and are not used in the ARM EABI.
*/
FBSDprivate_1.0 {
__umodsi3;
__modsi3;
__udivsi3;
__divsi3;
};

View File

@ -3,4 +3,8 @@
SRCS+= _ctx_start.S _setjmp.S _set_tp.c alloca.S fabs.c \
getcontextx.c infinity.c ldexp.c makecontext.c \
__aeabi_read_tp.S setjmp.S signalcontext.c sigsetjmp.S divsi3.S flt_rounds.c
__aeabi_read_tp.S setjmp.S signalcontext.c sigsetjmp.S flt_rounds.c
.if ${MK_ARM_EABI} == "no"
SRCS+= divsi3.S
.endif

View File

@ -136,18 +136,22 @@ SRCF+= adddf3 \
addsf3 \
divdf3 \
divsf3 \
divsi3 \
extendsfdf2 \
fixdfsi \
fixsfsi \
floatsidf \
floatsisf \
modsi3 \
muldf3 \
mulsf3 \
subdf3 \
subsf3 \
truncdfsf2 \
truncdfsf2
.endif
.if ${MACHINE_CPUARCH} != "mips" && \
(${MACHINE_CPUARCH} != "arm" || ${MK_ARM_EABI} != "no")
SRCF+= divsi3 \
modsi3 \
udivsi3 \
umodsi3
.endif