aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/arm/lib1funcs.asm
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2004-08-11 02:50:14 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2004-08-11 02:50:14 +0000
commitb3f8d95d356ae617eaa76aa21ebfa0649f927c13 (patch)
tree8ecb27f99fc899aec528b0cc2ea297f10080750c /gcc/config/arm/lib1funcs.asm
parentfba73eb1cb3e624b60cb9974d53c004c2562486b (diff)
downloadgcc-b3f8d95d356ae617eaa76aa21ebfa0649f927c13.zip
gcc-b3f8d95d356ae617eaa76aa21ebfa0649f927c13.tar.gz
gcc-b3f8d95d356ae617eaa76aa21ebfa0649f927c13.tar.bz2
configure.in (arm*-*-eabi*): New target.
* configure.in (arm*-*-eabi*): New target. * configure: Regenerate. * configure.ac (arm*-*-eabi*): New target. (arm*-*-symbianelf*): Likewise. * configure: Regenerated. * config.gcc (arm*-*-eabi*): New target. * defaults.h (TARGET_LIBGCC_FUNCS): New macro. (TARGET_LIB_INT_CMP_BIASED): Likewise. * expmed.c (expand_divmod): Try a two-valued divmod function as a last resort. * gthr.h: Remove bogus tokens at end of #pragma. * optabs.c (expand_twoval_binop_libfunc): New function. (prepare_cmp_insn): Handle the !TARGET_LIB_INT_CMP_BIASED case. (prepare_float_lib_cmp): Try reversing the condition. (debug_optab_libfuncs): New function. * optabs.h (expand_twoval_binop_libfunc): Declare. * config/arm/arm.c (arm_init_libfuncs): New function. (arm_compute_initial_eliminatino_offset): Return HOST_WIDE_INT. (TARGET_INIT_LIBFUNCS): Define it. * config/arm/arm.h (TARGET_BPABI): New macro. * config/arm/arm-protos.h (arm_compute_initial_elimination_offset): Return HOST_WIDE_INT. * config/arm/bpabi.S: New file. * config/arm/bpabi.c: Likewise. * config/arm/bpabi.h: Likewise. * config/arm/ieee754-df.S (__aeabi_dneg): New function or alias. (__aeabi_drsub): Likewise. (__aeabi_dsub): Likewise. (__aeabi_dadd): Likewise. (__aeabi_ui2d): Likewise. (__aeabi_i2d): Likewise. (__aeabi_f2d): Likewise. (__aeabi_dmul): Likewise. (__aeabi_ddiv): Likewise. (__aeabi_cdrcmple): Likewise. (__aeabi_cdcmpeq): Likewise. (__aeabi_cdcmple): Likewise. (__aeabi_dcmpeq): Likewise. (__aeabi_dcmplt): Likewise. (__aeabi_dcmple): Likewise. (__aeabi_dcmpge): Likewise. (__aeabi_dcmpgt): Likewise. (__aeabi_dcmpun): Likewise. (__aeabi_d2iz): Likewise. (__aeabi_d2uiz): Likewise. (__aeabi_d2f): Likewise. * config/arm/ieee754-sf.S (__aeabi_fneg): New function or alias. (__aeabi_frsub): Likewise. (__aeabi_fsub): Likewise. (__aeabi_fadd): Likewise. (__aeabi_ui2f): Likewise. (__aeabi_i2f): Likewise. (__aeabi_fmul): Likewise. (__aeabi_fdiv): Likewise. (__aeabi_cfrcmple): Likewise. (__aeabi_cfcmpeq): Likewise. (__aeabi_cfcmple): Likewise. (__aeabi_fcmpeq): Likewise. (__aeabi_fcmplt): Likewise. (__aeabi_fcmple): Likewise. (__aeabi_fcmpge): Likewise. (__aeabi_fcmpgt): Likewise. (__aeabi_fcmpun): Likewise. (__aeabi_f2iz): Likewise. (__aeabi_f2uiz): Likewise. * config/arm/lib1funcs.asm (ARM_CALL): New macro. (__aeabi_uidivmod): New function or alias. (__aeabi_idivmod): Likewise. (__aeabi_idiv0): Likewise. (__aeabi_ldiv0): Likewise. (__aeabi_llsr): Likewise. (__aeabi_lasr): Likewise. (__aeabi_llsl): Likewise. (bpabi.S): Include it. * config/arm/libgcc-bpabi.ver: New file. * config/arm/symbian.h (ARM_DEFAULT_ABI): Remove. (LINK_SPEC): Remove. * config/arm/t-arm-elf (LIB1ASMFUNCS): Add __aeabi_lcmp and __aeabi_ulcmp. * config/arm/t-bpabi: New file. * doc/tm.texi (TARGET_LIBGCC_FUNCS): New entry. (TARGET_LIB_INT_CMP_BIASED): Likewise. * gcc.dg/testsuite/gcc.dg/arm-eabi1.c: New test. * gcc.dg/dll-2.c: Fix dg-require syntax. * gcc.misc-tests/arm-isr.c (abort): Declare. (exit): Likewise. From-SVN: r85788
Diffstat (limited to 'gcc/config/arm/lib1funcs.asm')
-rw-r--r--gcc/config/arm/lib1funcs.asm40
1 files changed, 38 insertions, 2 deletions
diff --git a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
index 9f8b467..cea093c 100644
--- a/gcc/config/arm/lib1funcs.asm
+++ b/gcc/config/arm/lib1funcs.asm
@@ -199,6 +199,9 @@ SYM (__\name):
_L__\name: /* A hook to tell gdb that we've switched to ARM */
.endm
#define EQUIV .thumb_set
+.macro ARM_CALL name
+ bl _L__\name
+.endm
#else
.macro ARM_FUNC_START name
.text
@@ -209,6 +212,9 @@ _L__\name: /* A hook to tell gdb that we've switched to ARM */
SYM (__\name):
.endm
#define EQUIV .set
+.macro ARM_CALL name
+ bl __\name
+.endm
#endif
.macro ARM_FUNC_ALIAS new old
@@ -649,6 +655,15 @@ LSYM(Lgot_result):
DIV_FUNC_END udivsi3
+ARM_FUNC_START aeabi_uidivmod
+ stmfd sp!, { r0, r1, lr }
+ ARM_CALL udivsi3
+ ldmfd sp!, { r1, r2, lr }
+ mul r3, r2, r0
+ sub r1, r1, r3
+ RET
+ FUNC_END aeabi_uidivmod
+
#endif /* L_udivsi3 */
/* ------------------------------------------------------------------------ */
#ifdef L_umodsi3
@@ -769,6 +784,15 @@ LSYM(Lover12):
DIV_FUNC_END divsi3
+ARM_FUNC_START aeabi_idivmod
+ stmfd sp!, { r0, r1, lr }
+ ARM_CALL divsi3
+ ldmfd sp!, { r1, r2, lr }
+ mul r3, r2, r0
+ sub r1, r1, r3
+ RET
+ FUNC_END aeabi_idivmod
+
#endif /* L_divsi3 */
/* ------------------------------------------------------------------------ */
#ifdef L_modsi3
@@ -834,9 +858,13 @@ LSYM(Lover12):
#ifdef L_dvmd_tls
FUNC_START div0
+ ARM_FUNC_ALIAS aeabi_idiv0 div0
+ ARM_FUNC_ALIAS aeabi_ldiv0 div0
RET
+ FUNC_END aeabi_ldiv0
+ FUNC_END aeabi_idiv0
FUNC_END div0
#endif /* L_divmodsi_tools */
@@ -884,7 +912,8 @@ LSYM(Lover12):
#ifdef L_lshrdi3
FUNC_START lshrdi3
-
+ ARM_FUNC_ALIAS aeabi_llsr lshrdi3
+
#ifdef __thumb__
lsr al, r2
mov r3, ah
@@ -907,6 +936,7 @@ LSYM(Lover12):
mov ah, ah, lsr r2
RET
#endif
+ FUNC_END aeabi_llsr
FUNC_END lshrdi3
#endif
@@ -914,6 +944,8 @@ LSYM(Lover12):
#ifdef L_ashrdi3
FUNC_START ashrdi3
+ ARM_FUNC_ALIAS aeabi_lasr ashrdi3
+
#ifdef __thumb__
lsr al, r2
mov r3, ah
@@ -941,6 +973,7 @@ LSYM(Lover12):
RET
#endif
+ FUNC_END aeabi_lasr
FUNC_END ashrdi3
#endif
@@ -948,6 +981,8 @@ LSYM(Lover12):
#ifdef L_ashldi3
FUNC_START ashldi3
+ ARM_FUNC_ALIAS aeabi_llsl ashldi3
+
#ifdef __thumb__
lsl ah, r2
mov r3, al
@@ -970,6 +1005,7 @@ LSYM(Lover12):
mov al, al, lsl r2
RET
#endif
+ FUNC_END aeabi_llsl
FUNC_END ashldi3
#endif
@@ -1104,4 +1140,4 @@ LSYM(Lchange_\register):
#include "ieee754-df.S"
#include "ieee754-sf.S"
-
+#include "bpabi.S"