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
This commit is contained in:
Richard Earnshaw 2012-12-04 13:49:09 +00:00 committed by Richard Earnshaw
parent 37e33ecb85
commit 5005fe220a
6 changed files with 34 additions and 140 deletions

View File

@ -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> 2012-11-29 Kai Tietz <ktietz@redhat.com>
PR target/55445 PR target/55445

View File

@ -320,39 +320,21 @@ arm-wrs-vxworks)
tmake_file="$tmake_file arm/t-arm arm/t-vxworks t-fdpbit" tmake_file="$tmake_file arm/t-arm arm/t-vxworks t-fdpbit"
extra_parts="$extra_parts crti.o crtn.o" 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*) arm*-*-netbsdelf*)
tmake_file="$tmake_file arm/t-arm arm/t-netbsd t-slibgcc-gld-nover" tmake_file="$tmake_file arm/t-arm arm/t-netbsd t-slibgcc-gld-nover"
;; ;;
arm*-*-linux*) # ARM GNU/Linux with ELF arm*-*-linux*) # ARM GNU/Linux with ELF
tmake_file="${tmake_file} arm/t-arm t-fixedpoint-gnu-prefix" tmake_file="${tmake_file} arm/t-arm t-fixedpoint-gnu-prefix"
case ${host} in tmake_file="${tmake_file} arm/t-elf arm/t-bpabi arm/t-linux-eabi t-slibgcc-libgcc"
arm*-*-linux-*) tm_file="$tm_file arm/bpabi-lib.h"
tmake_file="${tmake_file} arm/t-elf arm/t-bpabi arm/t-linux-eabi t-slibgcc-libgcc" unwind_header=config/arm/unwind-arm.h
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 t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp" tmake_file="$tmake_file t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
;; ;;
arm*-*-uclinux*) # ARM ucLinux arm*-*-uclinux*) # ARM ucLinux
tmake_file="${tmake_file} t-fixedpoint-gnu-prefix" tmake_file="${tmake_file} t-fixedpoint-gnu-prefix"
case ${host} in tmake_file="${tmake_file} arm/t-bpabi"
arm*-*-uclinux*eabi) tm_file="$tm_file arm/bpabi-lib.h"
tmake_file="${tmake_file} arm/t-bpabi" unwind_header=config/arm/unwind-arm.h
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-arm arm/t-elf t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp" 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" 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" tmake_file="$tmake_file t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
unwind_header=config/arm/unwind-arm.h 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*) avr-*-rtems*)
tmake_file="$tmake_file avr/t-avr avr/t-rtems t-fpbit" tmake_file="$tmake_file avr/t-avr avr/t-rtems t-fpbit"
tm_file="$tm_file avr/avr-lib.h" tm_file="$tm_file avr/avr-lib.h"

View File

@ -1,6 +1,7 @@
/* ieee754-df.S double-precision floating point support for ARM /* 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) Contributed by Nicolas Pitre (nico@cam.org)
This file is free software; you can redistribute it and/or modify it 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. #ifndef __ARMEB__
@ For VFP, floats words follow the memory system mode.
#if defined(__VFP_FP__) && !defined(__ARMEB__)
#define xl r0 #define xl r0
#define xh r1 #define xh r1
#define yl r2 #define yl r2
@ -494,24 +493,10 @@ ARM_FUNC_START floatundidf
ARM_FUNC_ALIAS aeabi_ul2d floatundidf ARM_FUNC_ALIAS aeabi_ul2d floatundidf
orrs r2, r0, r1 orrs r2, r0, r1
#if !defined (__VFP_FP__) && !defined(__SOFTFP__)
do_it eq, t
mvfeqd f0, #0.0
#else
do_it eq do_it eq
#endif
RETc(eq) 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} do_push {r4, r5, lr}
#endif
mov r5, #0 mov r5, #0
b 2f b 2f
@ -520,24 +505,10 @@ ARM_FUNC_START floatdidf
ARM_FUNC_ALIAS aeabi_l2d floatdidf ARM_FUNC_ALIAS aeabi_l2d floatdidf
orrs r2, r0, r1 orrs r2, r0, r1
#if !defined (__VFP_FP__) && !defined(__SOFTFP__)
do_it eq, t
mvfeqd f0, #0.0
#else
do_it eq do_it eq
#endif
RETc(eq) 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} do_push {r4, r5, lr}
#endif
ands r5, ah, #0x80000000 @ sign bit in r5 ands r5, ah, #0x80000000 @ sign bit in r5
bpl 2f bpl 2f
@ -552,7 +523,7 @@ ARM_FUNC_ALIAS aeabi_l2d floatdidf
mov r4, #0x400 @ initial exponent mov r4, #0x400 @ initial exponent
add r4, r4, #(52-1 - 1) 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 .ifnc xh, ah
mov ip, al mov ip, al
mov xh, ah mov xh, ah
@ -580,17 +551,6 @@ ARM_FUNC_ALIAS aeabi_l2d floatdidf
add r4, r4, r2 add r4, r4, r2
b LSYM(Lad_p) 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 floatdidf
FUNC_END aeabi_l2d FUNC_END aeabi_l2d
FUNC_END floatundidf FUNC_END floatundidf

View File

@ -1,6 +1,7 @@
/* ieee754-sf.S single-precision floating point support for ARM /* 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) Contributed by Nicolas Pitre (nico@cam.org)
This file is free software; you can redistribute it and/or modify it 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 ARM_FUNC_ALIAS aeabi_ul2f floatundisf
orrs r2, r0, r1 orrs r2, r0, r1
#if !defined (__VFP_FP__) && !defined(__SOFTFP__)
do_it eq, t
mvfeqs f0, #0.0
#else
do_it eq do_it eq
#endif
RETc(eq) RETc(eq)
mov r3, #0 mov r3, #0
@ -340,12 +336,7 @@ ARM_FUNC_START floatdisf
ARM_FUNC_ALIAS aeabi_l2f floatdisf ARM_FUNC_ALIAS aeabi_l2f floatdisf
orrs r2, r0, r1 orrs r2, r0, r1
#if !defined (__VFP_FP__) && !defined(__SOFTFP__)
do_it eq, t
mvfeqs f0, #0.0
#else
do_it eq do_it eq
#endif
RETc(eq) RETc(eq)
ands r3, ah, #0x80000000 @ sign bit in r3 ands r3, ah, #0x80000000 @ sign bit in r3
@ -358,14 +349,6 @@ ARM_FUNC_ALIAS aeabi_l2f floatdisf
rsc ah, ah, #0 rsc ah, ah, #0
#endif #endif
1: 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 movs ip, ah
do_it eq, tt do_it eq, tt
moveq ip, al moveq ip, al
@ -427,15 +410,6 @@ ARM_FUNC_ALIAS aeabi_l2f floatdisf
biceq r0, r0, ip, lsr #31 biceq r0, r0, ip, lsr #31
RET 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 floatdisf
FUNC_END aeabi_l2f FUNC_END aeabi_l2f
FUNC_END floatundisf FUNC_END floatundisf

View File

@ -1,5 +1,5 @@
/* ARM EABI compliant unwinding routines /* 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 Contributed by Paul Brook
This file is free software; you can redistribute it and/or modify it 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; return _URC_FAILURE;
continue; continue;
} }
if ((op & 0xfc) == 0xb4) if ((op & 0xfc) == 0xb4) /* Obsolete FPA. */
{ return _URC_FAILURE;
/* 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;
}
/* op & 0xf8 == 0xb8. */ /* op & 0xf8 == 0xb8. */
/* Pop VFP D[8]-D[8+nnn] with fldmx. */ /* Pop VFP D[8]-D[8+nnn] with fldmx. */
op = 0x80000 | ((op & 7) + 1); op = 0x80000 | ((op & 7) + 1);
@ -278,15 +272,6 @@ __gnu_unwind_execute (_Unwind_Context * context, __gnu_unwind_state * uws)
} }
if (op == 0xc8) 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. */ /* Pop VFPv3 registers D[16+ssss]-D[16+ssss+cccc] with vldm. */
op = next_unwind_byte (uws); op = next_unwind_byte (uws);
op = (((op & 0xf0) + 16) << 12) | ((op & 0xf) + 1); op = (((op & 0xf0) + 16) << 12) | ((op & 0xf) + 1);
@ -294,7 +279,6 @@ __gnu_unwind_execute (_Unwind_Context * context, __gnu_unwind_state * uws)
!= _UVRSR_OK) != _UVRSR_OK)
return _URC_FAILURE; return _URC_FAILURE;
continue; continue;
#endif
} }
if (op == 0xc9) if (op == 0xc9)
{ {

View File

@ -1,5 +1,5 @@
/* ARM EABI compliant unwinding routines. /* 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 Contributed by Paul Brook
This file is free software; you can redistribute it and/or modify it This file is free software; you can redistribute it and/or modify it
@ -53,16 +53,6 @@ struct vfpv3_regs
_uw64 d[16]; _uw64 d[16];
}; };
struct fpa_reg
{
_uw w[3];
};
struct fpa_regs
{
struct fpa_reg f[8];
};
struct wmmxd_regs struct wmmxd_regs
{ {
_uw64 wd[16]; _uw64 wd[16];
@ -90,7 +80,6 @@ typedef struct
_uw prev_sp; /* Only valid during forced unwinding. */ _uw prev_sp; /* Only valid during forced unwinding. */
struct vfp_regs vfp; struct vfp_regs vfp;
struct vfpv3_regs vfp_regs_16_to_31; struct vfpv3_regs vfp_regs_16_to_31;
struct fpa_regs fpa;
struct wmmxd_regs wmmxd; struct wmmxd_regs wmmxd;
struct wmmxc_regs wmmxc; struct wmmxc_regs wmmxc;
} phase1_vrs; } phase1_vrs;
@ -181,7 +170,6 @@ _Unwind_VRS_Result _Unwind_VRS_Get (_Unwind_Context *context,
return _UVRSR_OK; return _UVRSR_OK;
case _UVRSC_VFP: case _UVRSC_VFP:
case _UVRSC_FPA:
case _UVRSC_WMMXD: case _UVRSC_WMMXD:
case _UVRSC_WMMXC: case _UVRSC_WMMXC:
return _UVRSR_NOT_IMPLEMENTED; return _UVRSR_NOT_IMPLEMENTED;
@ -213,7 +201,6 @@ _Unwind_VRS_Result _Unwind_VRS_Set (_Unwind_Context *context,
return _UVRSR_OK; return _UVRSR_OK;
case _UVRSC_VFP: case _UVRSC_VFP:
case _UVRSC_FPA:
case _UVRSC_WMMXD: case _UVRSC_WMMXD:
case _UVRSC_WMMXC: case _UVRSC_WMMXC:
return _UVRSR_NOT_IMPLEMENTED; return _UVRSR_NOT_IMPLEMENTED;
@ -380,9 +367,6 @@ _Unwind_VRS_Result _Unwind_VRS_Pop (_Unwind_Context *context,
} }
return _UVRSR_OK; return _UVRSR_OK;
case _UVRSC_FPA:
return _UVRSR_NOT_IMPLEMENTED;
case _UVRSC_WMMXD: case _UVRSC_WMMXD:
{ {
_uw start = discriminator >> 16; _uw start = discriminator >> 16;