sandbox: Allow return from board_init_f()
The execution flow becomes easier if we can return from board_init_f() as ARM does. We can control things from start.c instead of having to call back into that file from other places. Signed-off-by: Simon Glass <sjg@chromium.org> Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
6ebcab8de7
commit
808434cdbd
|
@ -10,6 +10,8 @@
|
||||||
|
|
||||||
#include <os.h>
|
#include <os.h>
|
||||||
|
|
||||||
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
int sandbox_early_getopt_check(void)
|
int sandbox_early_getopt_check(void)
|
||||||
{
|
{
|
||||||
struct sandbox_state *state = state_get_current();
|
struct sandbox_state *state = state_get_current();
|
||||||
|
@ -109,12 +111,11 @@ int main(int argc, char *argv[])
|
||||||
if (os_parse_args(state, argc, argv))
|
if (os_parse_args(state, argc, argv))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
/*
|
/* Do pre- and post-relocation init */
|
||||||
* Do pre- and post-relocation init, then start up U-Boot. This will
|
|
||||||
* never return.
|
|
||||||
*/
|
|
||||||
board_init_f(0);
|
board_init_f(0);
|
||||||
|
|
||||||
/* NOTREACHED - board_init_f() does not return */
|
board_init_r(gd->new_gd, 0);
|
||||||
|
|
||||||
|
/* NOTREACHED - board_init_r() does not return */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -772,7 +772,7 @@ static int setup_reloc(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ARM calls relocate_code from its crt0.S */
|
/* ARM calls relocate_code from its crt0.S */
|
||||||
#if !defined(CONFIG_ARM)
|
#if !defined(CONFIG_ARM) && !defined(CONFIG_SANDBOX)
|
||||||
|
|
||||||
static int jump_to_copy(void)
|
static int jump_to_copy(void)
|
||||||
{
|
{
|
||||||
|
@ -792,8 +792,6 @@ static int jump_to_copy(void)
|
||||||
* (CPU cache)
|
* (CPU cache)
|
||||||
*/
|
*/
|
||||||
board_init_f_r_trampoline(gd->start_addr_sp);
|
board_init_f_r_trampoline(gd->start_addr_sp);
|
||||||
#elif defined(CONFIG_SANDBOX)
|
|
||||||
board_init_r(gd->new_gd, 0);
|
|
||||||
#else
|
#else
|
||||||
relocate_code(gd->start_addr_sp, gd->new_gd, gd->relocaddr);
|
relocate_code(gd->start_addr_sp, gd->new_gd, gd->relocaddr);
|
||||||
#endif
|
#endif
|
||||||
|
@ -995,7 +993,7 @@ static init_fnc_t init_sequence_f[] = {
|
||||||
INIT_FUNC_WATCHDOG_RESET
|
INIT_FUNC_WATCHDOG_RESET
|
||||||
reloc_fdt,
|
reloc_fdt,
|
||||||
setup_reloc,
|
setup_reloc,
|
||||||
#ifndef CONFIG_ARM
|
#if !defined(CONFIG_ARM) && !defined(CONFIG_SANDBOX)
|
||||||
jump_to_copy,
|
jump_to_copy,
|
||||||
#endif
|
#endif
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -1015,7 +1013,7 @@ void board_init_f(ulong boot_flags)
|
||||||
if (initcall_run_list(init_sequence_f))
|
if (initcall_run_list(init_sequence_f))
|
||||||
hang();
|
hang();
|
||||||
|
|
||||||
#ifndef CONFIG_ARM
|
#if !defined(CONFIG_ARM) && !defined(CONFIG_SANDBOX)
|
||||||
/* NOTREACHED - jump_to_copy() does not return */
|
/* NOTREACHED - jump_to_copy() does not return */
|
||||||
hang();
|
hang();
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue