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:
parent
c1f4d4037a
commit
686c4e53ce
1 changed files with 11 additions and 0 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue