From ecad34966aad3f629442bca6c0731bf24adb945f Mon Sep 17 00:00:00 2001 From: Lionel Sambuc Date: Wed, 28 May 2014 15:30:34 +0200 Subject: [PATCH] Fix ARM floating point for services Change-Id: Ic5772a7a78ea13ab6bb8db3ffd7f0906fd1380cf --- lib/libminc/arch/earm/Makefile.libc.inc | 40 +++++++++++++++++++++++++ share/mk/minix.service.mk | 1 - 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/lib/libminc/arch/earm/Makefile.libc.inc b/lib/libminc/arch/earm/Makefile.libc.inc index 9d5a13ea1..2fd3cac48 100644 --- a/lib/libminc/arch/earm/Makefile.libc.inc +++ b/lib/libminc/arch/earm/Makefile.libc.inc @@ -57,3 +57,43 @@ ${f}: ${LIBCARCHDIR}/gen/${f:C/\.o/.S/} OBJS+= ${f} CLEANFILES+= ${f} .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 diff --git a/share/mk/minix.service.mk b/share/mk/minix.service.mk index 267449c15..0beebfee5 100644 --- a/share/mk/minix.service.mk +++ b/share/mk/minix.service.mk @@ -27,7 +27,6 @@ LDADD+= -lminc DPADD+= ${LIBMINC} .if ${MACHINE_ARCH} == "earm" -LDADD+= -lc_vfp # LSC: On ARM, when compiling statically, with gcc, lgcc_eh is required .if ${PROG:U} != "kernel" && !empty(CC:M*gcc)