Sorry for another self-followup... With the modified linker script, I already have a failure in board.c/board_init_f():
(gdb) break board.c:249 Breakpoint 1 at 0x4002089e: file board.c, line 249. (gdb) c Continuing. Breakpoint 1, board_init_f (bootflag=0) at board.c:249 249 memset ((void *) gd, 0, sizeof (gd_t)); (gdb) n 252 if ((*init_fnc_ptr)() != 0) { (gdb) print init_fnc_ptr $1 = (init_fnc_t **) 0x40040000 (gdb) print init_sequence $2 = {0x40033aca <get_clocks>, 0x4002e22e <env_init>, 0x400205ca <init_baudrate>, 0x40026ad2 <serial_init>, 0x4002ce4e <console_init_f>, 0x40030262 <display_options>, 0x400338e8 <checkcpu>, 0x4002ff80 <checkboard>, 0x40020596 <init_func_i2c>, 0x4002056c <init_func_spi>, 0x40020510 <init_func_ram>, 0} (gdb) print *init_fnc_ptr $3 = (init_fnc_t *) 0x1010101 (gdb) s [gdb hangs here, does not reach get_clocks()] The addresses from "print init_sequence" correspond to those found in u-boot.map. I have to admit I am a bit puzzled by the behaviour of gdb when printing pointers (did not use it for some years now...), but to me the init_fnc_ptr looks ... weird. And somehow truncated (?) like the fmt string in the debugged printf() from the last mail. I tried disabling the cache which was formerly enabled already in cpu_init_f(), but this did not change anything. Have to give up for today, hopefully I see more clearly next morning. Regards, Wolfgang _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot