diff options
author | Andrew Mahone <andrew.mahone@gmail.com> | 2010-01-03 04:48:19 +0000 |
---|---|---|
committer | Andrew Mahone <andrew.mahone@gmail.com> | 2010-01-03 04:48:19 +0000 |
commit | 686c4e53ceaa3932224ed512b37b1e4fb10a247e (patch) | |
tree | 505ee278909e338a707a7bd756b1b06e296fa13a /apps/codecs/lib | |
parent | c1f4d4037a8be88ebb94a5c28eba0f394efe623a (diff) | |
download | rockbox-686c4e53ceaa3932224ed512b37b1e4fb10a247e.tar.gz rockbox-686c4e53ceaa3932224ed512b37b1e4fb10a247e.zip |
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
Diffstat (limited to 'apps/codecs/lib')
-rw-r--r-- | apps/codecs/lib/udiv32_armv4.S | 11 |
1 files changed, 11 insertions, 0 deletions
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: | |||
128 | adr r2, .L_udiv32_div0_trap | 128 | adr r2, .L_udiv32_div0_trap |
129 | cmp r2, lr | 129 | cmp r2, lr |
130 | subeq sp, sp, #4 | 130 | subeq sp, sp, #4 |
131 | #if defined(__ARM_EABI__) || !defined(USE_IRAM) | ||
131 | bleq __div0 | 132 | bleq __div0 |
133 | #else | ||
134 | ldr r3, =__div0 | ||
135 | moveq lr, pc | ||
136 | bxeq r3 | ||
137 | #endif | ||
132 | /* Otherwise, push lr to the stack before calling __div0 */ | 138 | /* Otherwise, push lr to the stack before calling __div0 */ |
133 | stmdb sp!, { lr } | 139 | stmdb sp!, { lr } |
140 | #if defined(__ARM_EABI__) || !defined(USE_IRAM) | ||
134 | bl __div0 | 141 | bl __div0 |
142 | #else | ||
143 | mov lr, pc | ||
144 | bx r3 | ||
145 | #endif | ||
135 | .size udiv32_arm, . - udiv32_arm | 146 | .size udiv32_arm, . - udiv32_arm |