]> git.ipfire.org Git - people/ms/u-boot.git/blame - lib/initcall.c
imx: hab: Check if CSF contains deprecated commands
[people/ms/u-boot.git] / lib / initcall.c
CommitLineData
c8a311d9
SG
1/*
2 * Copyright (c) 2013 The Chromium OS Authors.
3 *
1a459660 4 * SPDX-License-Identifier: GPL-2.0+
c8a311d9
SG
5 */
6
7#include <common.h>
8#include <initcall.h>
f134ed7d 9#include <efi.h>
c8a311d9 10
2f43f854
SG
11DECLARE_GLOBAL_DATA_PTR;
12
13int initcall_run_list(const init_fnc_t init_sequence[])
c8a311d9 14{
2f43f854 15 const init_fnc_t *init_fnc_ptr;
c8a311d9
SG
16
17 for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
2f43f854 18 unsigned long reloc_ofs = 0;
aacc6c5d 19 int ret;
2f43f854
SG
20
21 if (gd->flags & GD_FLG_RELOC)
22 reloc_ofs = gd->reloc_off;
f134ed7d
SG
23#ifdef CONFIG_EFI_APP
24 reloc_ofs = (unsigned long)image_base;
25#endif
e38d1cb2
AB
26 debug("initcall: %p", (char *)*init_fnc_ptr - reloc_ofs);
27 if (gd->flags & GD_FLG_RELOC)
28 debug(" (relocated to %p)\n", (char *)*init_fnc_ptr);
29 else
30 debug("\n");
aacc6c5d
SG
31 ret = (*init_fnc_ptr)();
32 if (ret) {
33 printf("initcall sequence %p failed at call %p (err=%d)\n",
2f43f854 34 init_sequence,
aacc6c5d 35 (char *)*init_fnc_ptr - reloc_ofs, ret);
c8a311d9
SG
36 return -1;
37 }
38 }
39 return 0;
40}