In order to pass command line arguments to sandbox we need to be able to act on them. So take control back at the end of board_init_r() from where we can call the main loop or do something else.
Signed-off-by: Simon Glass <s...@chromium.org> --- Changes in v2: - Call cpu_main_loop() from board_init_r() arch/sandbox/cpu/start.c | 8 ++++++++ arch/sandbox/include/asm/u-boot-sandbox.h | 3 +++ arch/sandbox/lib/board.c | 7 ++++--- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/arch/sandbox/cpu/start.c b/arch/sandbox/cpu/start.c index b3442e8..d7402be 100644 --- a/arch/sandbox/cpu/start.c +++ b/arch/sandbox/cpu/start.c @@ -22,6 +22,14 @@ #include <common.h> #include <asm/arch/state.h> +#include <os.h> + +void start_main_loop(void) +{ + for (;;) + main_loop(); +} + int main(int argc, char *argv[]) { struct sandbox_state *state = NULL; diff --git a/arch/sandbox/include/asm/u-boot-sandbox.h b/arch/sandbox/include/asm/u-boot-sandbox.h index 236b4ee..3743289 100644 --- a/arch/sandbox/include/asm/u-boot-sandbox.h +++ b/arch/sandbox/include/asm/u-boot-sandbox.h @@ -35,4 +35,7 @@ int board_init(void); int dram_init(void); +/* start.c */ +void start_main_loop(void); + #endif /* _U_BOOT_SANDBOX_H_ */ diff --git a/arch/sandbox/lib/board.c b/arch/sandbox/lib/board.c index c5a1177..31e09d1 100644 --- a/arch/sandbox/lib/board.c +++ b/arch/sandbox/lib/board.c @@ -270,11 +270,12 @@ void board_init_r(gd_t *id, ulong dest_addr) #endif /* - * For now, run the main loop. Later we might let this be done - * in the main program. + * This function can't return (to match other archs) so call back + * into start.c so that sandbox can do something other than the main + * loop if it likes */ while (1) - main_loop(); + start_main_loop(); /* NOTREACHED - no way out of command loop except booting */ } -- 1.7.3.1 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot