Fix ARM floating point for services

Change-Id: Ic5772a7a78ea13ab6bb8db3ffd7f0906fd1380cf
This commit is contained in:
Lionel Sambuc 2014-05-28 15:30:34 +02:00
parent 5308df03ed
commit ecad34966a
2 changed files with 40 additions and 1 deletions

View file

@ -57,3 +57,43 @@ ${f}: ${LIBCARCHDIR}/gen/${f:C/\.o/.S/}
OBJS+= ${f} OBJS+= ${f}
CLEANFILES+= ${f} CLEANFILES+= ${f}
.endfor .endfor
.for f in \
__aeabi_dcmpeq.o __aeabi_fcmpeq.o \
__aeabi_dcmpge.o __aeabi_fcmpge.o \
__aeabi_dcmpgt.o __aeabi_fcmpgt.o \
__aeabi_dcmple.o __aeabi_fcmple.o \
__aeabi_dcmplt.o __aeabi_fcmplt.o \
__aeabi_dcmpun.o __aeabi_fcmpun.o
CPPFLAGS.${f:C/\.o/.c/}+= -I${LIBCARCHDIR}/softfloat -I${LIBCDIR}/softfloat
CPPFLAGS.${f:C/\.o/.c/}+= -DSOFTFLOAT_FOR_GCC
${f}: ${LIBCARCHDIR}/softfloat/${f:C/\.o/.c/}
OBJS+= ${f}
CLEANFILES+= ${f}
.endfor
.for f in \
fpgetround.o fpsetround.o fpgetmask.o fpsetmask.o \
fpgetsticky.o fpsetsticky.o
CPPFLAGS.${f:C/\.o/.c/}+= -I${LIBCARCHDIR}/softfloat -I${LIBCDIR}/softfloat
CPPFLAGS.${f:C/\.o/.c/}+= -DSOFTFLOAT_FOR_GCC
${f}: ${LIBCDIR}/softfloat/${f:C/\.o/.c/}
OBJS+= ${f}
CLEANFILES+= ${f}
.endfor
SOFTFLOAT_BITS?=64
.for f in \
softfloat.o
CPPFLAGS.${f:C/\.o/.c/}+= -I${LIBCARCHDIR}/softfloat -I${LIBCDIR}/softfloat
CPPFLAGS.${f:C/\.o/.c/}+= -DSOFTFLOAT_FOR_GCC
${f}: ${LIBCDIR}/softfloat/bits${SOFTFLOAT_BITS}/${f:C/\.o/.c/}
OBJS+= ${f}
CLEANFILES+= ${f}
.endfor
.if defined(HAVE_GCC) && ${HAVE_GCC} >= 45
.if (${MACHINE_CPU} == "arm")
COPTS.softfloat.c+= -Wno-enum-compare -fno-tree-vrp
.endif
.endif

View file

@ -27,7 +27,6 @@ LDADD+= -lminc
DPADD+= ${LIBMINC} DPADD+= ${LIBMINC}
.if ${MACHINE_ARCH} == "earm" .if ${MACHINE_ARCH} == "earm"
LDADD+= -lc_vfp
# LSC: On ARM, when compiling statically, with gcc, lgcc_eh is required # LSC: On ARM, when compiling statically, with gcc, lgcc_eh is required
.if ${PROG:U} != "kernel" && !empty(CC:M*gcc) .if ${PROG:U} != "kernel" && !empty(CC:M*gcc)