The debug() which prints out the current call is not very useful, since if it is called early enough (such as before the console is ready in the pre-relocation board_init_f() sequence) it can hang the board.
It is more useful to print a message when a call fails, and in this case the non-relocated symbol address provides a way for the offending function to be located in System.map. Adjust the initcall to provide this. Signed-off-by: Simon Glass <s...@chromium.org> --- lib/initcall.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/initcall.c b/lib/initcall.c index fc91bf6..ace285d 100644 --- a/lib/initcall.c +++ b/lib/initcall.c @@ -23,15 +23,20 @@ #include <common.h> #include <initcall.h> +DECLARE_GLOBAL_DATA_PTR; + int initcall_run_list(init_fnc_t init_sequence[]) { init_fnc_t *init_fnc_ptr; for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) { - debug("initcall: %p\n", *init_fnc_ptr); if ((*init_fnc_ptr)()) { + unsigned long reloc_ofs = 0; + + if (gd->flags & GD_FLG_RELOC) + reloc_ofs = gd->reloc_off; debug("initcall sequence %p failed at call %p\n", - init_sequence, *init_fnc_ptr); + init_sequence, (char *)*init_fnc_ptr - reloc_ofs); return -1; } } -- 1.8.1.3 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot