aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorRichard Earnshaw <rearnsha@arm.com>2012-12-04 13:49:09 +0000
committerRichard Earnshaw <rearnsha@gcc.gnu.org>2012-12-04 13:49:09 +0000
commit5005fe220a46685544e05626fc5528fd072bacd9 (patch)
treec4b6cb64622c01903295d7089fffae1685422938 /libgcc
parent37e33ecb8539a032b132b957c34bad2aeaf3f3e3 (diff)
downloadgcc-5005fe220a46685544e05626fc5528fd072bacd9.zip
gcc-5005fe220a46685544e05626fc5528fd072bacd9.tar.gz
gcc-5005fe220a46685544e05626fc5528fd072bacd9.tar.bz2
config.host: (arm*-*-freebsd*): Remove.
* config.host: (arm*-*-freebsd*): Remove. (arm*-*-linux*, arm*-*-uclinux*): Simplify logic. (arm*-*-elf*): Remove. (arm*-*-wince-pe*): Remove. * arm/unwind-arm.c (struct fpa_reg): Delete. (struct fpa_regs): Delete. (phase1_vrs): Remove fpa element. (_Unwind_VRS_Get): Remove _UVRSC_FPA. (_Unwind_VRS_Set, _Unwind_VRS_Pop): Likewise. * arm/pr-support.c (__gnu_unwind_execute): Remove FPA support. * ieee754-sf.S (floatundisf): Remove FPA support. (floatdisf): Likewise. * ieee75f-df.S (floatundidf): Likewise. (floatdidf): Likewise. From-SVN: r194138
Diffstat (limited to 'libgcc')
-rw-r--r--libgcc/ChangeLog17
-rw-r--r--libgcc/config.host37
-rw-r--r--libgcc/config/arm/ieee754-df.S48
-rw-r--r--libgcc/config/arm/ieee754-sf.S30
-rw-r--r--libgcc/config/arm/pr-support.c24
-rw-r--r--libgcc/config/arm/unwind-arm.c18
6 files changed, 34 insertions, 140 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 616e21c..884ee6e 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,20 @@
+2012-12-04 Richard Earnshaw <rearnsha@arm.com>
+
+ * config.host: (arm*-*-freebsd*): Remove.
+ (arm*-*-linux*, arm*-*-uclinux*): Simplify logic.
+ (arm*-*-elf*): Remove.
+ (arm*-*-wince-pe*): Remove.
+ * arm/unwind-arm.c (struct fpa_reg): Delete.
+ (struct fpa_regs): Delete.
+ (phase1_vrs): Remove fpa element.
+ (_Unwind_VRS_Get): Remove _UVRSC_FPA.
+ (_Unwind_VRS_Set, _Unwind_VRS_Pop): Likewise.
+ * arm/pr-support.c (__gnu_unwind_execute): Remove FPA support.
+ * ieee754-sf.S (floatundisf): Remove FPA support.
+ (floatdisf): Likewise.
+ * ieee75f-df.S (floatundidf): Likewise.
+ (floatdidf): Likewise.
+
2012-11-29 Kai Tietz <ktietz@redhat.com>
PR target/55445
diff --git a/libgcc/config.host b/libgcc/config.host
index f391334..0f19d44 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -320,39 +320,21 @@ arm-wrs-vxworks)
tmake_file="$tmake_file arm/t-arm arm/t-vxworks t-fdpbit"
extra_parts="$extra_parts crti.o crtn.o"
;;
-arm*-*-freebsd*)
- tmake_file="$tmake_file arm/t-arm arm/t-strongarm-elf t-fdpbit"
- ;;
arm*-*-netbsdelf*)
tmake_file="$tmake_file arm/t-arm arm/t-netbsd t-slibgcc-gld-nover"
;;
arm*-*-linux*) # ARM GNU/Linux with ELF
tmake_file="${tmake_file} arm/t-arm t-fixedpoint-gnu-prefix"
- case ${host} in
- arm*-*-linux-*)
- tmake_file="${tmake_file} arm/t-elf arm/t-bpabi arm/t-linux-eabi t-slibgcc-libgcc"
- tm_file="$tm_file arm/bpabi-lib.h"
- unwind_header=config/arm/unwind-arm.h
- ;;
- *)
- tmake_file="$tmake_file arm/t-linux"
- ;;
- esac
+ tmake_file="${tmake_file} arm/t-elf arm/t-bpabi arm/t-linux-eabi t-slibgcc-libgcc"
+ tm_file="$tm_file arm/bpabi-lib.h"
+ unwind_header=config/arm/unwind-arm.h
tmake_file="$tmake_file t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
;;
arm*-*-uclinux*) # ARM ucLinux
tmake_file="${tmake_file} t-fixedpoint-gnu-prefix"
- case ${host} in
- arm*-*-uclinux*eabi)
- tmake_file="${tmake_file} arm/t-bpabi"
- tm_file="$tm_file arm/bpabi-lib.h"
- unwind_header=config/arm/unwind-arm.h
- ;;
- esac
- tmake_file="$tmake_file arm/t-arm arm/t-elf t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
- extra_parts="$extra_parts crti.o crtn.o"
- ;;
-arm*-*-ecos-elf)
+ tmake_file="${tmake_file} arm/t-bpabi"
+ tm_file="$tm_file arm/bpabi-lib.h"
+ unwind_header=config/arm/unwind-arm.h
tmake_file="$tmake_file arm/t-arm arm/t-elf t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
extra_parts="$extra_parts crti.o crtn.o"
;;
@@ -373,13 +355,6 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*)
tmake_file="$tmake_file t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
unwind_header=config/arm/unwind-arm.h
;;
-arm*-*-elf)
- tmake_file="$tmake_file arm/t-arm arm/t-elf t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
- extra_parts="$extra_parts crti.o crtn.o"
- ;;
-arm*-wince-pe*)
- tmake_file="$tmake_file arm/t-arm arm/t-wince-pe"
- ;;
avr-*-rtems*)
tmake_file="$tmake_file avr/t-avr avr/t-rtems t-fpbit"
tm_file="$tm_file avr/avr-lib.h"
diff --git a/libgcc/config/arm/ieee754-df.S b/libgcc/config/arm/ieee754-df.S
index 99f1ebb..676f7c9 100644
--- a/libgcc/config/arm/ieee754-df.S
+++ b/libgcc/config/arm/ieee754-df.S
@@ -1,6 +1,7 @@
/* ieee754-df.S double-precision floating point support for ARM
- Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009, 2012
+ Free Software Foundation, Inc.
Contributed by Nicolas Pitre (nico@cam.org)
This file is free software; you can redistribute it and/or modify it
@@ -36,9 +37,7 @@
*/
-@ For FPA, float words are always big-endian.
-@ For VFP, floats words follow the memory system mode.
-#if defined(__VFP_FP__) && !defined(__ARMEB__)
+#ifndef __ARMEB__
#define xl r0
#define xh r1
#define yl r2
@@ -494,24 +493,10 @@ ARM_FUNC_START floatundidf
ARM_FUNC_ALIAS aeabi_ul2d floatundidf
orrs r2, r0, r1
-#if !defined (__VFP_FP__) && !defined(__SOFTFP__)
- do_it eq, t
- mvfeqd f0, #0.0
-#else
do_it eq
-#endif
RETc(eq)
-#if !defined (__VFP_FP__) && !defined(__SOFTFP__)
- @ For hard FPA code we want to return via the tail below so that
- @ we can return the result in f0 as well as in r0/r1 for backwards
- @ compatibility.
- adr ip, LSYM(f0_ret)
- @ Push pc as well so that RETLDM works correctly.
- do_push {r4, r5, ip, lr, pc}
-#else
do_push {r4, r5, lr}
-#endif
mov r5, #0
b 2f
@@ -520,24 +505,10 @@ ARM_FUNC_START floatdidf
ARM_FUNC_ALIAS aeabi_l2d floatdidf
orrs r2, r0, r1
-#if !defined (__VFP_FP__) && !defined(__SOFTFP__)
- do_it eq, t
- mvfeqd f0, #0.0
-#else
do_it eq
-#endif
RETc(eq)
-#if !defined (__VFP_FP__) && !defined(__SOFTFP__)
- @ For hard FPA code we want to return via the tail below so that
- @ we can return the result in f0 as well as in r0/r1 for backwards
- @ compatibility.
- adr ip, LSYM(f0_ret)
- @ Push pc as well so that RETLDM works correctly.
- do_push {r4, r5, ip, lr, pc}
-#else
do_push {r4, r5, lr}
-#endif
ands r5, ah, #0x80000000 @ sign bit in r5
bpl 2f
@@ -552,7 +523,7 @@ ARM_FUNC_ALIAS aeabi_l2d floatdidf
mov r4, #0x400 @ initial exponent
add r4, r4, #(52-1 - 1)
- @ FPA little-endian: must swap the word order.
+ @ If FP word order does not match integer word order, swap the words.
.ifnc xh, ah
mov ip, al
mov xh, ah
@@ -580,17 +551,6 @@ ARM_FUNC_ALIAS aeabi_l2d floatdidf
add r4, r4, r2
b LSYM(Lad_p)
-#if !defined (__VFP_FP__) && !defined(__SOFTFP__)
-
- @ Legacy code expects the result to be returned in f0. Copy it
- @ there as well.
-LSYM(f0_ret):
- do_push {r0, r1}
- ldfd f0, [sp], #8
- RETLDM
-
-#endif
-
FUNC_END floatdidf
FUNC_END aeabi_l2d
FUNC_END floatundidf
diff --git a/libgcc/config/arm/ieee754-sf.S b/libgcc/config/arm/ieee754-sf.S
index cf4ff0e..397a4c1 100644
--- a/libgcc/config/arm/ieee754-sf.S
+++ b/libgcc/config/arm/ieee754-sf.S
@@ -1,6 +1,7 @@
/* ieee754-sf.S single-precision floating point support for ARM
- Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009, 2012
+ Free Software Foundation, Inc.
Contributed by Nicolas Pitre (nico@cam.org)
This file is free software; you can redistribute it and/or modify it
@@ -325,12 +326,7 @@ ARM_FUNC_START floatundisf
ARM_FUNC_ALIAS aeabi_ul2f floatundisf
orrs r2, r0, r1
-#if !defined (__VFP_FP__) && !defined(__SOFTFP__)
- do_it eq, t
- mvfeqs f0, #0.0
-#else
do_it eq
-#endif
RETc(eq)
mov r3, #0
@@ -340,12 +336,7 @@ ARM_FUNC_START floatdisf
ARM_FUNC_ALIAS aeabi_l2f floatdisf
orrs r2, r0, r1
-#if !defined (__VFP_FP__) && !defined(__SOFTFP__)
- do_it eq, t
- mvfeqs f0, #0.0
-#else
do_it eq
-#endif
RETc(eq)
ands r3, ah, #0x80000000 @ sign bit in r3
@@ -358,14 +349,6 @@ ARM_FUNC_ALIAS aeabi_l2f floatdisf
rsc ah, ah, #0
#endif
1:
-#if !defined (__VFP_FP__) && !defined(__SOFTFP__)
- @ For hard FPA code we want to return via the tail below so that
- @ we can return the result in f0 as well as in r0 for backwards
- @ compatibility.
- str lr, [sp, #-8]!
- adr lr, LSYM(f0_ret)
-#endif
-
movs ip, ah
do_it eq, tt
moveq ip, al
@@ -427,15 +410,6 @@ ARM_FUNC_ALIAS aeabi_l2f floatdisf
biceq r0, r0, ip, lsr #31
RET
-#if !defined (__VFP_FP__) && !defined(__SOFTFP__)
-
-LSYM(f0_ret):
- str r0, [sp, #-4]!
- ldfs f0, [sp], #4
- RETLDM
-
-#endif
-
FUNC_END floatdisf
FUNC_END aeabi_l2f
FUNC_END floatundisf
diff --git a/libgcc/config/arm/pr-support.c b/libgcc/config/arm/pr-support.c
index deee661..e0973b5 100644
--- a/libgcc/config/arm/pr-support.c
+++ b/libgcc/config/arm/pr-support.c
@@ -1,5 +1,5 @@
/* ARM EABI compliant unwinding routines
- Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2009, 2012 Free Software Foundation, Inc.
Contributed by Paul Brook
This file is free software; you can redistribute it and/or modify it
@@ -226,15 +226,9 @@ __gnu_unwind_execute (_Unwind_Context * context, __gnu_unwind_state * uws)
return _URC_FAILURE;
continue;
}
- if ((op & 0xfc) == 0xb4)
- {
- /* Pop FPA E[4]-E[4+nn]. */
- op = 0x40000 | ((op & 3) + 1);
- if (_Unwind_VRS_Pop (context, _UVRSC_FPA, op, _UVRSD_FPAX)
- != _UVRSR_OK)
- return _URC_FAILURE;
- continue;
- }
+ if ((op & 0xfc) == 0xb4) /* Obsolete FPA. */
+ return _URC_FAILURE;
+
/* op & 0xf8 == 0xb8. */
/* Pop VFP D[8]-D[8+nnn] with fldmx. */
op = 0x80000 | ((op & 7) + 1);
@@ -278,15 +272,6 @@ __gnu_unwind_execute (_Unwind_Context * context, __gnu_unwind_state * uws)
}
if (op == 0xc8)
{
-#ifndef __VFP_FP__
- /* Pop FPA registers. */
- op = next_unwind_byte (uws);
- op = ((op & 0xf0) << 12) | ((op & 0xf) + 1);
- if (_Unwind_VRS_Pop (context, _UVRSC_FPA, op, _UVRSD_FPAX)
- != _UVRSR_OK)
- return _URC_FAILURE;
- continue;
-#else
/* Pop VFPv3 registers D[16+ssss]-D[16+ssss+cccc] with vldm. */
op = next_unwind_byte (uws);
op = (((op & 0xf0) + 16) << 12) | ((op & 0xf) + 1);
@@ -294,7 +279,6 @@ __gnu_unwind_execute (_Unwind_Context * context, __gnu_unwind_state * uws)
!= _UVRSR_OK)
return _URC_FAILURE;
continue;
-#endif
}
if (op == 0xc9)
{
diff --git a/libgcc/config/arm/unwind-arm.c b/libgcc/config/arm/unwind-arm.c
index 1e8ca61..27d68f9 100644
--- a/libgcc/config/arm/unwind-arm.c
+++ b/libgcc/config/arm/unwind-arm.c
@@ -1,5 +1,5 @@
/* ARM EABI compliant unwinding routines.
- Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2009, 2012 Free Software Foundation, Inc.
Contributed by Paul Brook
This file is free software; you can redistribute it and/or modify it
@@ -53,16 +53,6 @@ struct vfpv3_regs
_uw64 d[16];
};
-struct fpa_reg
-{
- _uw w[3];
-};
-
-struct fpa_regs
-{
- struct fpa_reg f[8];
-};
-
struct wmmxd_regs
{
_uw64 wd[16];
@@ -90,7 +80,6 @@ typedef struct
_uw prev_sp; /* Only valid during forced unwinding. */
struct vfp_regs vfp;
struct vfpv3_regs vfp_regs_16_to_31;
- struct fpa_regs fpa;
struct wmmxd_regs wmmxd;
struct wmmxc_regs wmmxc;
} phase1_vrs;
@@ -181,7 +170,6 @@ _Unwind_VRS_Result _Unwind_VRS_Get (_Unwind_Context *context,
return _UVRSR_OK;
case _UVRSC_VFP:
- case _UVRSC_FPA:
case _UVRSC_WMMXD:
case _UVRSC_WMMXC:
return _UVRSR_NOT_IMPLEMENTED;
@@ -213,7 +201,6 @@ _Unwind_VRS_Result _Unwind_VRS_Set (_Unwind_Context *context,
return _UVRSR_OK;
case _UVRSC_VFP:
- case _UVRSC_FPA:
case _UVRSC_WMMXD:
case _UVRSC_WMMXC:
return _UVRSR_NOT_IMPLEMENTED;
@@ -380,9 +367,6 @@ _Unwind_VRS_Result _Unwind_VRS_Pop (_Unwind_Context *context,
}
return _UVRSR_OK;
- case _UVRSC_FPA:
- return _UVRSR_NOT_IMPLEMENTED;
-
case _UVRSC_WMMXD:
{
_uw start = discriminator >> 16;