]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
sandbox: Allow return from board_init_f()
authorSimon Glass <sjg@chromium.org>
Sun, 10 Nov 2013 17:26:59 +0000 (10:26 -0700)
committerSimon Glass <sjg@chromium.org>
Thu, 9 Jan 2014 00:24:38 +0000 (17:24 -0700)
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>
arch/sandbox/cpu/start.c
common/board_f.c

index 951ac63f3a16c67a2ce704b06fa1d0424a8e073a..895c4d82b0dd654bd70cbc4b91c62ba3d5c5d952 100644 (file)
@@ -10,6 +10,8 @@
 
 #include <os.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 int sandbox_early_getopt_check(void)
 {
        struct sandbox_state *state = state_get_current();
@@ -109,12 +111,11 @@ int main(int argc, char *argv[])
        if (os_parse_args(state, argc, argv))
                return 1;
 
-       /*
-        * Do pre- and post-relocation init, then start up U-Boot. This will
-        * never return.
-        */
+       /* Do pre- and post-relocation init */
        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;
 }
index fcfd713b076b0dc45754a634ec982a520e11b7d5..6f77e1d1295a1e66841ebe41bb0a9f23ebb97e9d 100644 (file)
@@ -772,7 +772,7 @@ static int setup_reloc(void)
 }
 
 /* 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)
 {
@@ -792,8 +792,6 @@ static int jump_to_copy(void)
         * (CPU cache)
         */
        board_init_f_r_trampoline(gd->start_addr_sp);
-#elif defined(CONFIG_SANDBOX)
-       board_init_r(gd->new_gd, 0);
 #else
        relocate_code(gd->start_addr_sp, gd->new_gd, gd->relocaddr);
 #endif
@@ -995,7 +993,7 @@ static init_fnc_t init_sequence_f[] = {
        INIT_FUNC_WATCHDOG_RESET
        reloc_fdt,
        setup_reloc,
-#ifndef CONFIG_ARM
+#if !defined(CONFIG_ARM) && !defined(CONFIG_SANDBOX)
        jump_to_copy,
 #endif
        NULL,
@@ -1015,7 +1013,7 @@ void board_init_f(ulong boot_flags)
        if (initcall_run_list(init_sequence_f))
                hang();
 
-#ifndef CONFIG_ARM
+#if !defined(CONFIG_ARM) && !defined(CONFIG_SANDBOX)
        /* NOTREACHED - jump_to_copy() does not return */
        hang();
 #endif