[U-Boot-Users] Problem with IXDP425 u-boot.
Herb Radford
hradford at symbium.com
Fri Jan 14 18:27:17 CET 2005
On Thu, 2005-01-13 at 04:58, Wolfgang Denk wrote:
> Dear Herb,
>
> in message <1105551343.13808.475.camel at hr2600.symbium.com> you wrote:
> >
> > > > I'm using ELDK 3.1 from which I installed support for the
> > > > "arm-linux" target (not clearly documented I must say) which
> > >
> > > What exactly is "not clearly documented"? I'd like to improve this.
> > >
> > Wolfgang, the README file in ELDK3.1 says to specify a <cpu_family> so I
> > tried "XScale" and got a failure. I had to go to the "Working with ELDK"
> > section to find out that there is in fact ONLY ONE possible choice for
> > <cpu_family> and it is used by all ARM targets!
>
> I see. Will fix this ASAP.
>
> > Of course it makes me nervous, and when I look in u-boot.map it's not
> > attributed to the local u-boot tree! Here's the u-boot.map line:
> >
> > /opt/eldkarm31/usr/bin/../lib/gcc-lib/arm-linux/3.3.3/libgcc.a(_umodsi3.o)
>
> This is indeed an interesting hint. Especially when you look at this
> object file:
>
> -> arm-linux-objdump -D libgcc.a
> ...
> _umodsi3.o: file format elf32-littlearm
> ------------------------------------------^^^^^^^^^
>
> Disassembly of section .text:
>
> 00000000 <__umodsi3>:
> 0: e3510000 cmp r1, #0 ; 0x0
> 4: 0a00002a beq b0 <__umodsi3+0xb0>
> 8: e3510001 cmp r1, #1 ; 0x1
> c: 11500001 cmpne r0, r1
> 10: 03a00000 moveq r0, #0 ; 0x0
> 14: 312fff1e bxcc lr
> 18: e3a03001 mov r3, #1 ; 0x1
> 1c: e3510201 cmp r1, #268435456 ; 0x10000000
> 20: 31510000 cmpcc r1, r0
> 24: 31a01201 movcc r1, r1, lsl #4
> 28: 31a03203 movcc r3, r3, lsl #4
>
> This explains why you see bogus code - this file is for little endian
> systems, while your board is built for bigendian mode.
>
> Mixing these two doesn't make much sense.
>
> > > > This is part of the software floating point support for IXP425.
> > >
> > > No, this has nothing to do with FP support. It's a simple division
> > > routine.
> > OK, then why does my IXP425 switch to Thumb mode when it executes:
> >
> > 28: e3510102 cmp r1, #-2147483648 ; 0x80000000
>
> Because it doesn't understand that this is actually a "cmp r1, #0"
> instruction in wrong endianess.
>
> > Any ideas?
>
> Yes. Find out why we use libgcc.a(_umodsi3.o) instead of
> lib_arm/libarm.a(_umodsi3.o) when building for bigendian systems.
>
> Best regards,
>
> Wolfgang Denk
Wolfgang, I didn't find out why libgcc.a is used for big-endian systems,
I found line #124 was causing this. I don't know what PLATFORM_LIBS is
really used for but by commenting that line out, u-boot comes up just
fine.
Now on to PCI for this board!
(And that's going to be another thread!)
Regards, Herb
More information about the U-Boot
mailing list