lib1funcs.asm (ARM_FUNC_ALIAS): Also alias _L__name.

* config/arm/lib1funcs.asm (ARM_FUNC_ALIAS): Also alias _L__name.
	(aeabi_uidivmod, aeabi_idivmod): Provide thumb implementation.

From-SVN: r85879
This commit is contained in:
Paul Brook 2004-08-12 16:14:52 +00:00
parent 02b7526217
commit db151e9d83
2 changed files with 36 additions and 6 deletions

View file

@ -1,6 +1,11 @@
2004-08-12 Paul Brook <paul@codesourcery.com>
* config/arm/lib1funcs.asm (ARM_FUNC_ALIAS): Also alias _L__name.
(aeabi_uidivmod, aeabi_idivmod): Provide thumb implementation.
2004-08-12 David Daney <ddaney@avtrex.com>
* java/gcj.texi: Add subsection on signal usage.
* java/gcj.texi: Add subsection on signal usage.
2004-08-12 David Edelsohn <edelsohn@gnu.org>

View file

@ -196,9 +196,13 @@ SYM (__\name):
bx pc
nop
.arm
_L__\name: /* A hook to tell gdb that we've switched to ARM */
/* A hook to tell gdb that we've switched to ARM mode. Also used to call
directly from other local arm routines. */
_L__\name:
.endm
#define EQUIV .thumb_set
/* Branch directly to a function declared with ARM_FUNC_START.
Must be called in arm mode. */
.macro ARM_CALL name
bl _L__\name
.endm
@ -220,6 +224,9 @@ SYM (__\name):
.macro ARM_FUNC_ALIAS new old
.globl SYM (__\new)
EQUIV SYM (__\new), SYM (__\old)
#ifdef __thumb__
.set SYM (_L__\new), SYM (_L__\old)
#endif
.endm
#ifdef __thumb__
@ -655,13 +662,22 @@ LSYM(Lgot_result):
DIV_FUNC_END udivsi3
ARM_FUNC_START aeabi_uidivmod
FUNC_START aeabi_uidivmod
#ifdef __thumb__
push {r0, r1, lr}
bl SYM(__udivsi3)
POP {r1, r2, r3}
mul r2, r0
sub r1, r1, r2
bx r3
#else
stmfd sp!, { r0, r1, lr }
ARM_CALL udivsi3
bl SYM(__udivsi3)
ldmfd sp!, { r1, r2, lr }
mul r3, r2, r0
sub r1, r1, r3
RET
#endif
FUNC_END aeabi_uidivmod
#endif /* L_udivsi3 */
@ -784,13 +800,22 @@ LSYM(Lover12):
DIV_FUNC_END divsi3
ARM_FUNC_START aeabi_idivmod
FUNC_START aeabi_idivmod
#ifdef __thumb__
push {r0, r1, lr}
bl SYM(__divsi3)
POP {r1, r2, r3}
mul r2, r0
sub r1, r1, r2
bx r3
#else
stmfd sp!, { r0, r1, lr }
ARM_CALL divsi3
bl SYM(__divsi3)
ldmfd sp!, { r1, r2, lr }
mul r3, r2, r0
sub r1, r1, r3
RET
#endif
FUNC_END aeabi_idivmod
#endif /* L_divsi3 */