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:
Simon Glass 2013-11-10 10:26:59 -07:00
parent 6ebcab8de7
commit 808434cdbd
2 changed files with 9 additions and 10 deletions

View File

@ -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;
} }

View File

@ -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