From 686c4e53ceaa3932224ed512b37b1e4fb10a247e Mon Sep 17 00:00:00 2001 From: Andrew Mahone Date: Sun, 3 Jan 2010 04:48:19 +0000 Subject: 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 --- apps/codecs/lib/udiv32_armv4.S | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'apps/codecs/lib') diff --git a/apps/codecs/lib/udiv32_armv4.S b/apps/codecs/lib/udiv32_armv4.S index b54156809c..ae2bddb20e 100644 --- a/apps/codecs/lib/udiv32_armv4.S +++ b/apps/codecs/lib/udiv32_armv4.S @@ -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 -- cgit v1.2.3