diff options
author | Holger Freyther <zecke@selfish.org> | 2012-04-08 10:01:04 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2012-04-08 10:01:04 +0200 |
commit | f0fb308984a66ca2c6f8fd2a3a2e9edcae1b5ccb (patch) | |
tree | 295607311cee8c0169c47a01dda2c8b2de689b0a | |
parent | 868b6d0c68f52385f7924e7d63eb1a5e92642f3a (diff) |
eabi: Remove EABI functions to fix building with EABI toolchains
These symbols are not referenced on an arm-elf gcc 4.7, they are
used when building with an arm-eabi gcc 4.7 and then cause linking
issues. The linking to libgcc can not be omitted as the irq code is
using ffs. Remove the EABI symbols. The alternative would be to
declare the EABI as weak inside the lib1funcs.
Link error:
multiple definition of `__udivsi3'
multiple definition of `__aeabi_uidiv'
Exported symbols:
nm lib/lib1funcs.o
00000000 t Ldiv0
00000010 T __div0
-rw-r--r-- | firmware/lib/lib1funcs.S | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/firmware/lib/lib1funcs.S b/firmware/lib/lib1funcs.S index 92a6c56..87890db 100644 --- a/firmware/lib/lib1funcs.S +++ b/firmware/lib/lib1funcs.S @@ -205,105 +205,6 @@ Boston, MA 02111-1307, USA. */ .endm -ENTRY(__udivsi3) -ENTRY(__aeabi_uidiv) - - subs r2, r1, #1 - moveq pc, lr - bcc Ldiv0 - cmp r0, r1 - bls 11f - tst r1, r2 - beq 12f - - ARM_DIV_BODY r0, r1, r2, r3 - - mov r0, r2 - mov pc, lr - -11: moveq r0, #1 - movne r0, #0 - mov pc, lr - -12: ARM_DIV2_ORDER r1, r2 - - mov r0, r0, lsr r2 - mov pc, lr - - -ENTRY(__umodsi3) - - subs r2, r1, #1 @ compare divisor with 1 - bcc Ldiv0 - cmpne r0, r1 @ compare dividend with divisor - moveq r0, #0 - tsthi r1, r2 @ see if divisor is power of 2 - andeq r0, r0, r2 - movls pc, lr - - ARM_MOD_BODY r0, r1, r2, r3 - - mov pc, lr - - -ENTRY(__divsi3) -ENTRY(__aeabi_idiv) - - cmp r1, #0 - eor ip, r0, r1 @ save the sign of the result. - beq Ldiv0 - rsbmi r1, r1, #0 @ loops below use unsigned. - subs r2, r1, #1 @ division by 1 or -1 ? - beq 10f - movs r3, r0 - rsbmi r3, r0, #0 @ positive dividend value - cmp r3, r1 - bls 11f - tst r1, r2 @ divisor is power of 2 ? - beq 12f - - ARM_DIV_BODY r3, r1, r0, r2 - - cmp ip, #0 - rsbmi r0, r0, #0 - mov pc, lr - -10: teq ip, r0 @ same sign ? - rsbmi r0, r0, #0 - mov pc, lr - -11: movlo r0, #0 - moveq r0, ip, asr #31 - orreq r0, r0, #1 - mov pc, lr - -12: ARM_DIV2_ORDER r1, r2 - - cmp ip, #0 - mov r0, r3, lsr r2 - rsbmi r0, r0, #0 - mov pc, lr - - -ENTRY(__modsi3) - - cmp r1, #0 - beq Ldiv0 - rsbmi r1, r1, #0 @ loops below use unsigned. - movs ip, r0 @ preserve sign of dividend - rsbmi r0, r0, #0 @ if negative make positive - subs r2, r1, #1 @ compare divisor with 1 - cmpne r0, r1 @ compare dividend with divisor - moveq r0, #0 - tsthi r1, r2 @ see if divisor is power of 2 - andeq r0, r0, r2 - bls 10f - - ARM_MOD_BODY r0, r1, r2, r3 - -10: cmp ip, #0 - rsbmi r0, r0, #0 - mov pc, lr #ifdef CONFIG_AEABI |