[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