Hi Simon, On Thu, 15 Nov 2012 11:35:27 -0800, Simon Glass <s...@chromium.org> wrote:
> Hi Albert, > > On Sat, Nov 10, 2012 at 9:00 AM, Albert ARIBAUD > <albert.u.b...@aribaud.net> wrote: > > Move all the C runtime setup code from every start.S > > in arch/arm into arch/arm/lib/crt0.S. This covers > > the code sequence from isetting up the initial stack > > to calling into board_init_r(). > > > > Also, rewrite the C runtime setup and make functions > > board_init_*() and relocate_code() behave according to > > normal C semantics (no jumping across the C stack any > > more, etc). > > > > Some SPL targets had to be touched because they use > > start.S exolicitly or for some reason; the relevant > > maintainers and custodians are cc:ed. > > > > Signed-off-by: Albert ARIBAUD <albert.u.b...@aribaud.net> > > I am very pleased to see this. My generic relocation series from some > time ago is still hanging around. Your series tidies up some things > which would make that series easier to do. I'm happy to take another > look at it. I do remember your series -- it is part of what gave me the incentive toput this patch series together. :) > I have tested your series on a Tegra seaboard, and got it running with > a few changes. Please see comments below. > > + ldr r0, =__bss_start /* this is auto-relocated! */ > > + ldr r1, =__bss_end__ /* this is auto-relocated! */ > > I noticed this last time around - really we should have __bss_end__, > not __bss_end. Something to look at in future work, perhaps. Noted. > > + bhs clbss_l > > I think this should be blo, not bhs. Otherwise the BSS does not get > cleared and my seaboard doesn't boot properly. Thanks -- not the first time I see these... I'll have a go at checking all loops. > > + /* call board_init_r */ > > + ldr pc, _board_init_r /* this is auto-relocated! */ > > For my toolchain I need: > > ldr pc, =board_init_r > > otherwise I get: > > crt0.S: Assembler messages: > crt0.S:176: Error: internal_relocation (type: OFFSET_IMM) not fixed up Thanks -- this could well cure errors that Tom Warren reported to me for various toolchains. > Also _board_init_r seems to be the wrong symbol name for me: > > arch/arm/lib/libarm.o: In function `clbss_l': > /home/sjg/trunk/src/third_party/u-boot/files/arch/arm/lib/crt0.S:176: > undefined reference to `_board_init_r' Thanks a lot for the feedback and analysis! This should make V4 work on a much wider range of ARM boards. > Regards, > Simon Amicalement, -- Albert. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot