X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=lib%2Finitcall.c;h=8f1dac68e40fa74d29065af56f18822ca8770e5d;hb=2ec3d25f8faab51c2334174a582a96ad28d96344;hp=7597bad555404a276a72afd4bda981e0f4187ce7;hpb=28b62f0de361ae640eb286969536a236cc8febda;p=oweals%2Fu-boot.git diff --git a/lib/initcall.c b/lib/initcall.c index 7597bad555..8f1dac68e4 100644 --- a/lib/initcall.c +++ b/lib/initcall.c @@ -1,11 +1,11 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * Copyright (c) 2013 The Chromium OS Authors. - * - * SPDX-License-Identifier: GPL-2.0+ */ #include #include +#include DECLARE_GLOBAL_DATA_PTR; @@ -15,14 +15,23 @@ int initcall_run_list(const init_fnc_t init_sequence[]) for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) { unsigned long reloc_ofs = 0; + int ret; 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)()) { - printf("initcall sequence %p failed at call %p\n", +#ifdef CONFIG_EFI_APP + reloc_ofs = (unsigned long)image_base; +#endif + debug("initcall: %p", (char *)*init_fnc_ptr - reloc_ofs); + if (gd->flags & GD_FLG_RELOC) + debug(" (relocated to %p)\n", (char *)*init_fnc_ptr); + else + debug("\n"); + ret = (*init_fnc_ptr)(); + if (ret) { + printf("initcall sequence %p failed at call %p (err=%d)\n", init_sequence, - (char *)*init_fnc_ptr - reloc_ofs); + (char *)*init_fnc_ptr - reloc_ofs, ret); return -1; } }