From f0fb308984a66ca2c6f8fd2a3a2e9edcae1b5ccb Mon Sep 17 00:00:00 2001 From: Holger Freyther Date: Sun, 8 Apr 2012 10:01:04 +0200 Subject: 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 --- firmware/lib/lib1funcs.S | 99 ------------------------------------------------ 1 file changed, 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 -- cgit v1.2.3