[U-Boot-Users] U-Boot with gcc-3.3.2 and ARM926EJS Targets fails due to __udi

Markus Pietrek maillist at fsforth.de
Thu Jan 29 09:37:25 CET 2004


Hello,

> your compiler wasn't built for a stand-alone target, otherwise
> it would have included a full implementation of __div0, __udivsi3 etc.
> However, there might be an easy solution to your problem, see below.

There is a full set already available in the gcc? But anyway, it makes not 
much sense using two different gcc compilers. One for the bootloader, one for 
applications. And with which one has the linux kernel to be compiled?


> The reason for the difference is the link order:
> For SMDK2410, __udivsi3 is needed by a module linked before libarm.a
> (in this case, cpu/arm920t/speed.c), whereas for NS9750 no module
> before or in libarm.a needs it; drivers/libdrivers.a is linked after
> libarm.a, so the linker won't go back to get __udivsi3 there and falls
> back to using libgcc.a, which is linked last.

Yes, of course. Now I see it. I'm needing the non-power 2 division only in the 
serial driver for calculation the baudrate divisior. And libdrivers has been 
after libarm :-( 

> Please try the attached quick patch and let us know if it solves the
> problem (or if it breaks thing). Caveat - I haven't tried it myself
> yet!

Thank you, it works fine. Therefore, in the near future a new board and CPU 
will be supported by U-Boot :-)

Bye,

-- 
Markus Pietrek
Kueferstrasse 8, D-79206 Breisach, Germany
FS Forth-Systeme GmbH
Phone: +49 (7667) 908 145,  FAX +49 (7667) 908 221






More information about the U-Boot mailing list