Use long jump to reach __div0 from udiv32_arm if building with IRAM and without EABI.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24152 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Andrew Mahone 2010-01-03 04:48:19 +00:00
parent c1f4d4037a
commit 686c4e53ce

View file

@ -128,8 +128,19 @@ udiv32_arm:
adr r2, .L_udiv32_div0_trap
cmp r2, lr
subeq sp, sp, #4
#if defined(__ARM_EABI__) || !defined(USE_IRAM)
bleq __div0
#else
ldr r3, =__div0
moveq lr, pc
bxeq r3
#endif
/* Otherwise, push lr to the stack before calling __div0 */
stmdb sp!, { lr }
#if defined(__ARM_EABI__) || !defined(USE_IRAM)
bl __div0
#else
mov lr, pc
bx r3
#endif
.size udiv32_arm, . - udiv32_arm