initcall: Improve debugging support

Add the ability to display the code offset of an initcall even after it
is relocated. This makes it much easier to relate initcalls back to the
U-Boot System.map file.

Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
master
Simon Glass 11 years ago committed by Minkyu Kang
parent a9cf6da925
commit 2f43f85460
  1. 2
      include/initcall.h
  2. 17
      lib/initcall.c

@ -6,4 +6,4 @@
typedef int (*init_fnc_t)(void);
int initcall_run_list(init_fnc_t init_sequence[]);
int initcall_run_list(const init_fnc_t init_sequence[]);

@ -7,15 +7,22 @@
#include <common.h>
#include <initcall.h>
int initcall_run_list(init_fnc_t init_sequence[])
DECLARE_GLOBAL_DATA_PTR;
int initcall_run_list(const init_fnc_t init_sequence[])
{
init_fnc_t *init_fnc_ptr;
const 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);
unsigned long reloc_ofs = 0;
if (gd->flags & GD_FLG_RELOC)
reloc_ofs = gd->reloc_off;
debug("initcall: %p\n", (char *)*init_fnc_ptr - reloc_ofs);
if ((*init_fnc_ptr)()) {
debug("initcall sequence %p failed at call %p\n",
init_sequence, *init_fnc_ptr);
printf("initcall sequence %p failed at call %p\n",
init_sequence,
(char *)*init_fnc_ptr - reloc_ofs);
return -1;
}
}

Loading…
Cancel
Save