Bombing U-Boot on ARMv4, any hints?
Michael Hope
michael.hope at linaro.org
Mon Mar 5 23:01:33 UTC 2012
On Tue, Mar 6, 2012 at 11:52 AM, Linus Walleij <linus.walleij at linaro.org> wrote:
> Hi toolchain folks,
>
> I have a problem with U-boot compiled for an ARMv4 system (Integrator)
> using Linaro 2012.02-20120222, it just crashes. Compiling the same
> U-Boot with CodeSourcery 2010-q1 works fine.
>
> Symptom:
> Resetting CPU ...
>
> undefined instruction
> pc : [<07fdecd4>] lr : [<07fdeb34>]
> sp : 07f91380 ip : 00000000 fp : 00000001
> r10: 010258fc r9 : 00000000 r8 : 07f94f64
> r7 : 07f94eb0 r6 : 00989680 r5 : 000186a0 r4 : 000186a0
> r3 : 000003e8 r2 : 000f423f r1 : 000f4240 r0 : 05f5e100
> Flags: nzCv IRQs on FIQs on Mode SVC_32
>
> (repeated ad nauseam)
>
> The only hint I have is the constant 000186a0, which appears
> here in the put_dec() routine from U-boots vsprintf(), which is
> nothing special, it's Douglas Jones' binary to decimal conversion
> code from the Linux kernel, but the compiles objects DOES
> contain calls to __aeabi_uidivmod, __udivsi3, __div64_32.
>
> Do we know of any potential trouble in these helpers on ARMv4?
>
> The file containing these functions is compiled like this:
>
> arm-linux-gnueabi-gcc -M -g -Os -fno-common -ffixed-r8 -msoft-float
> -D__KERNEL__ -DCONFIG_SYS_TEXT_BASE=0x01000000
> -I/var/linus/u-boot/build-integrator/include2
> -I/var/linus/u-boot/build-integrator/include
> -I/var/linus/u-boot/include -fno-builtin -ffreestanding -nostdinc
> -isystem /home/linus/src/gcc-linaro-arm-linux-gnueabi-2012.02-20120222_linux/bin/../lib/gcc/arm-linux-gnueabi/4.6.3/include
> -pipe -DCONFIG_ARM -D__ARM__ -marm -mabi=aapcs-linux
> -mno-thumb-interwork -march=armv4 -MQ
> /var/linus/u-boot/build-integrator/lib/vsprintf.o vsprintf.c
>>/var/linus/u-boot/build-integrator/lib/.depend.vsprintf
Hi Linus. Is this the arm-linux-gnueabi-gcc from the Ubuntu binary
package? If so then the libgcc is an ARMv7 Thumb-2 VFP binary which
won't run on an ARMv4. The kernel gets around this by providing its
own helper routines. Does u-boot do the same?
The CodeSourcery toolchain is surviving as it targets ARMv5 by default
and includes multilibs for earlier architectures?
What instructions are at or near 0x07fdecd4 and 07fdeb34?
-- Michaels
More information about the linaro-toolchain
mailing list