From owner-svn-src-projects@FreeBSD.ORG Sun Apr 1 06:31:58 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5A06B106566B; Sun, 1 Apr 2012 06:31:58 +0000 (UTC) (envelope-from andrew@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3BAA38FC0A; Sun, 1 Apr 2012 06:31:58 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q316Vwhk036630; Sun, 1 Apr 2012 06:31:58 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q316Vv6l036618; Sun, 1 Apr 2012 06:31:57 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201204010631.q316Vv6l036618@svn.freebsd.org> From: Andrew Turner Date: Sun, 1 Apr 2012 06:31:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r233753 - in projects/arm_eabi: contrib/compiler-rt/lib lib/libc lib/libc/arm lib/libc/arm/aeabi lib/libc/arm/gen lib/libcompiler_rt X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Apr 2012 06:31:58 -0000 Author: andrew Date: Sun Apr 1 06:31:57 2012 New Revision: 233753 URL: http://svn.freebsd.org/changeset/base/233753 Log: Revert to the libc softfloat. Other parts of libc depend on it. Added: projects/arm_eabi/lib/libc/arm/aeabi/aeabi_double.c projects/arm_eabi/lib/libc/arm/aeabi/aeabi_float.c Modified: projects/arm_eabi/contrib/compiler-rt/lib/comparedf2.c projects/arm_eabi/contrib/compiler-rt/lib/comparesf2.c projects/arm_eabi/lib/libc/Makefile projects/arm_eabi/lib/libc/arm/Symbol.map projects/arm_eabi/lib/libc/arm/Symbol_oabi.map projects/arm_eabi/lib/libc/arm/aeabi/Makefile.inc projects/arm_eabi/lib/libc/arm/aeabi/Symbol.map projects/arm_eabi/lib/libc/arm/gen/flt_rounds.c projects/arm_eabi/lib/libcompiler_rt/Makefile Modified: projects/arm_eabi/contrib/compiler-rt/lib/comparedf2.c ============================================================================== --- projects/arm_eabi/contrib/compiler-rt/lib/comparedf2.c Sun Apr 1 01:14:05 2012 (r233752) +++ projects/arm_eabi/contrib/compiler-rt/lib/comparedf2.c Sun Apr 1 06:31:57 2012 (r233753) @@ -130,31 +130,3 @@ enum GE_RESULT __gtdf2(fp_t a, fp_t b) { return __gedf2(a, b); } -#ifdef __ARM_EABI__ -// The following are required for the ARM EABI. - -int __aeabi_dcmpeq(fp_t a, fp_t b) { - return __ledf2(a, b) == 0; -} - -int __aeabi_dcmplt(fp_t a, fp_t b) { - return __ledf2(a, b) < 0; -} - -int __aeabi_dcmple(fp_t a, fp_t b) { - return __ledf2(a, b) <= 0; -} - -int __aeabi_dcmpge(fp_t a, fp_t b) { - return __gedf2(a, b) >= 0; -} - -int __aeabi_dcmpgt(fp_t a, fp_t b) { - return __gedf2(a, b) > 0; -} - -int __aeabi_dcmpun(fp_t a, fp_t b) { - return __unorddf2(a, b); -} -#endif - Modified: projects/arm_eabi/contrib/compiler-rt/lib/comparesf2.c ============================================================================== --- projects/arm_eabi/contrib/compiler-rt/lib/comparesf2.c Sun Apr 1 01:14:05 2012 (r233752) +++ projects/arm_eabi/contrib/compiler-rt/lib/comparesf2.c Sun Apr 1 06:31:57 2012 (r233753) @@ -129,32 +129,3 @@ enum LE_RESULT __nesf2(fp_t a, fp_t b) { enum GE_RESULT __gtsf2(fp_t a, fp_t b) { return __gesf2(a, b); } - -#ifdef __ARM_EABI__ -// The following are required for the ARM EABI. - -int __aeabi_fcmpeq(fp_t a, fp_t b) { - return __lesf2(a, b) == 0; -} - -int __aeabi_fcmplt(fp_t a, fp_t b) { - return __lesf2(a, b) < 0; -} - -int __aeabi_fcmple(fp_t a, fp_t b) { - return __lesf2(a, b) <= 0; -} - -int __aeabi_fcmpge(fp_t a, fp_t b) { - return __gesf2(a, b) >= 0; -} - -int __aeabi_fcmpgt(fp_t a, fp_t b) { - return __gesf2(a, b) > 0; -} - -int __aeabi_fcmpun(fp_t a, fp_t b) { - return __unordsf2(a, b); -} -#endif - Modified: projects/arm_eabi/lib/libc/Makefile ============================================================================== --- projects/arm_eabi/lib/libc/Makefile Sun Apr 1 01:14:05 2012 (r233752) +++ projects/arm_eabi/lib/libc/Makefile Sun Apr 1 06:31:57 2012 (r233753) @@ -85,7 +85,7 @@ NOASM= .include "${.CURDIR}/rpc/Makefile.inc" .include "${.CURDIR}/uuid/Makefile.inc" .include "${.CURDIR}/xdr/Makefile.inc" -.if ${LIBC_ARCH} == "mips" +.if ${LIBC_ARCH} == "arm" || ${LIBC_ARCH} == "mips" .include "${.CURDIR}/softfloat/Makefile.inc" .endif .if ${MK_NIS} != "no" Modified: projects/arm_eabi/lib/libc/arm/Symbol.map ============================================================================== --- projects/arm_eabi/lib/libc/arm/Symbol.map Sun Apr 1 01:14:05 2012 (r233752) +++ projects/arm_eabi/lib/libc/arm/Symbol.map Sun Apr 1 06:31:57 2012 (r233753) @@ -54,4 +54,22 @@ FBSDprivate_1.0 { curbrk; minbrk; _sbrk; + + /* softfloat */ + __addsf3; + __adddf3; + __subsf3; + __subdf3; + __mulsf3; + __muldf3; + __divsf3; + __divdf3; + __floatsisf; + __floatsidf; + __fixsfsi; + __fixdfsi; + __fixunssfsi; + __fixunsdfsi; + __extendsfdf2; + __truncdfsf2; }; Modified: projects/arm_eabi/lib/libc/arm/Symbol_oabi.map ============================================================================== --- projects/arm_eabi/lib/libc/arm/Symbol_oabi.map Sun Apr 1 01:14:05 2012 (r233752) +++ projects/arm_eabi/lib/libc/arm/Symbol_oabi.map Sun Apr 1 06:31:57 2012 (r233753) @@ -13,22 +13,4 @@ FBSDprivate_1.0 { __modsi3; __udivsi3; __divsi3; - - /* softfloat */ - __addsf3; - __adddf3; - __subsf3; - __subdf3; - __mulsf3; - __muldf3; - __divsf3; - __divdf3; - __floatsisf; - __floatsidf; - __fixsfsi; - __fixdfsi; - __fixunssfsi; - __fixunsdfsi; - __extendsfdf2; - __truncdfsf2; }; Modified: projects/arm_eabi/lib/libc/arm/aeabi/Makefile.inc ============================================================================== --- projects/arm_eabi/lib/libc/arm/aeabi/Makefile.inc Sun Apr 1 01:14:05 2012 (r233752) +++ projects/arm_eabi/lib/libc/arm/aeabi/Makefile.inc Sun Apr 1 06:31:57 2012 (r233753) @@ -3,6 +3,8 @@ .PATH: ${.CURDIR}/arm/aeabi SRCS+= aeabi_atexit.c \ + aeabi_double.c \ + aeabi_float.c \ aeabi_unwind_cpp.c SYM_MAPS+=${.CURDIR}/arm/aeabi/Symbol.map Modified: projects/arm_eabi/lib/libc/arm/aeabi/Symbol.map ============================================================================== --- projects/arm_eabi/lib/libc/arm/aeabi/Symbol.map Sun Apr 1 01:14:05 2012 (r233752) +++ projects/arm_eabi/lib/libc/arm/aeabi/Symbol.map Sun Apr 1 06:31:57 2012 (r233753) @@ -3,10 +3,45 @@ */ /* - * This only needs to contain symbols that are not listed in + * This only needs to contain AEABI 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, ...). */ FBSDprivate_1.0 { __aeabi_atexit; + + __aeabi_dcmpeq; + __aeabi_dcmplt; + __aeabi_dcmple; + __aeabi_dcmpge; + __aeabi_dcmpgt; + __aeabi_dcmpun; + + __aeabi_d2iz; + __aeabi_d2f; + + __aeabi_dadd; + __aeabi_ddiv; + __aeabi_dmul; + __aeabi_dsub; + + + __aeabi_fcmpeq; + __aeabi_fcmplt; + __aeabi_fcmple; + __aeabi_fcmpge; + __aeabi_fcmpgt; + __aeabi_fcmpun; + + __aeabi_f2iz; + __aeabi_f2d; + + __aeabi_fadd; + __aeabi_fdiv; + __aeabi_fmul; + __aeabi_fsub; + + + __aeabi_i2d; + __aeabi_i2f; }; Added: projects/arm_eabi/lib/libc/arm/aeabi/aeabi_double.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/arm_eabi/lib/libc/arm/aeabi/aeabi_double.c Sun Apr 1 06:31:57 2012 (r233753) @@ -0,0 +1,112 @@ +/* + * Copyright (C) 2012 Andrew Turner + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "softfloat-for-gcc.h" +#include "milieu.h" +#include "softfloat.h" + +float64 __adddf3(float64 a, float64 b); +float64 __divdf3(float64 a, float64 b); +float64 __muldf3(float64 a, float64 b); +float64 __subdf3(float64 a, float64 b); + +float32 __truncdfsf2(float64 a); + +int32 __fixdfsi(float64); +float64 __floatsidf(int32 a); +flag __gedf2(float64, float64); +flag __ledf2(float64, float64); +flag __unorddf2(float64, float64); + +int __aeabi_dcmpeq(double a, double b) +{ + return __ledf2(a, b) == 0; +} + +int __aeabi_dcmplt(double a, double b) +{ + return __ledf2(a, b) < 0; +} + +int __aeabi_dcmple(double a, double b) +{ + return __ledf2(a, b) <= 0; +} + +int __aeabi_dcmpge(double a, double b) +{ + return __gedf2(a, b) >= 0; +} + +int __aeabi_dcmpgt(double a, double b) +{ + return __gedf2(a, b) > 0; +} + +int __aeabi_dcmpun(double a, double b) +{ + return __unorddf2(a, b); +} + +int __aeabi_d2iz(double a) +{ + return __fixdfsi(a); +} + +float __aeabi_d2f(double a) +{ + return __truncdfsf2(a); +} + +double __aeabi_i2d(int a) +{ + return __floatsidf(a); +} + +double __aeabi_dadd(double a, double b) +{ + return __adddf3(a, b); +} + +double __aeabi_ddiv(double a, double b) +{ + return __divdf3(a, b); +} + +double __aeabi_dmul(double a, double b) +{ + return __muldf3(a, b); +} + +double __aeabi_dsub(double a, double b) +{ + return __subdf3(a, b); +} + Added: projects/arm_eabi/lib/libc/arm/aeabi/aeabi_float.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/arm_eabi/lib/libc/arm/aeabi/aeabi_float.c Sun Apr 1 06:31:57 2012 (r233753) @@ -0,0 +1,112 @@ +/* + * Copyright (C) 2012 Andrew Turner + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "softfloat-for-gcc.h" +#include "milieu.h" +#include "softfloat.h" + +float32 __addsf3(float32 a, float32 b); +float32 __divsf3(float32 a, float32 b); +float32 __mulsf3(float32 a, float32 b); +float32 __subsf3(float32 a, float32 b); + +float64 __extendsfdf2(float32 a); + +int32 __fixsfsi(float32); +float32 __floatsisf(int32 a); +flag __gesf2(float32, float32); +flag __lesf2(float32, float32); +flag __unordsf2(float32, float32); + +int __aeabi_fcmpeq(float a, float b) +{ + return __lesf2(a, b) == 0; +} + +int __aeabi_fcmplt(float a, float b) +{ + return __lesf2(a, b) < 0; +} + +int __aeabi_fcmple(float a, float b) +{ + return __lesf2(a, b) <= 0; +} + +int __aeabi_fcmpge(float a, float b) +{ + return __gesf2(a, b) >= 0; +} + +int __aeabi_fcmpgt(float a, float b) +{ + return __gesf2(a, b) > 0; +} + +int __aeabi_fcmpun(float a, float b) +{ + return __unordsf2(a, b); +} + +int __aeabi_f2iz(float a) +{ + return __fixsfsi(a); +} + +double __aeabi_f2d(float a) +{ + return __extendsfdf2(a); +} + +float __aeabi_i2f(int a) +{ + return __floatsisf(a); +} + +float __aeabi_fadd(float a, float b) +{ + return __addsf3(a, b); +} + +float __aeabi_fdiv(float a, float b) +{ + return __divsf3(a, b); +} + +float __aeabi_fmul(float a, float b) +{ + return __mulsf3(a, b); +} + +float __aeabi_fsub(float a, float b) +{ + return __subsf3(a, b); +} + Modified: projects/arm_eabi/lib/libc/arm/gen/flt_rounds.c ============================================================================== --- projects/arm_eabi/lib/libc/arm/gen/flt_rounds.c Sun Apr 1 01:14:05 2012 (r233752) +++ projects/arm_eabi/lib/libc/arm/gen/flt_rounds.c Sun Apr 1 06:31:57 2012 (r233753) @@ -30,22 +30,15 @@ __FBSDID("$FreeBSD$"); #include #include -#ifndef __ARM_EABI__ #include "softfloat-for-gcc.h" #include "milieu.h" #include "softfloat.h" -#endif int __flt_rounds(void) { -#ifdef __ARM_EABI__ - /* - * We use compiler-rt which uses round to nearest. - */ - return (1); -#elif !defined(ARM_HARD_FLOAT) +#ifndef ARM_HARD_FLOAT /* * Translate our rounding modes to the unnamed * manifest constants required by C99 et. al. Modified: projects/arm_eabi/lib/libcompiler_rt/Makefile ============================================================================== --- projects/arm_eabi/lib/libcompiler_rt/Makefile Sun Apr 1 01:14:05 2012 (r233752) +++ projects/arm_eabi/lib/libcompiler_rt/Makefile Sun Apr 1 06:31:57 2012 (r233753) @@ -127,23 +127,26 @@ SRCF= absvdi2 \ umodti3 # These are already shipped by libc.a on arm and mips -.if ${MACHINE_CPUARCH} != "mips" +.if ${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "mips" SRCF+= adddf3 \ addsf3 \ divdf3 \ divsf3 \ - divsi3 \ extendsfdf2 \ fixdfsi \ fixsfsi \ floatsidf \ floatsisf \ - modsi3 \ muldf3 \ mulsf3 \ subdf3 \ subsf3 \ - truncdfsf2 \ + truncdfsf2 +.endif + +.if ${MACHINE_CPUARCH} != "mips" +SRCF+= divsi3 \ + modsi3 \ udivsi3 \ umodsi3 .endif