From 75fa002c47171b73fb4c1f2c2fe4d6391c136276 Mon Sep 17 00:00:00 2001 From: Kumar Gala Date: Wed, 27 Feb 2008 21:51:51 -0600 Subject: [new uImage] Respect autostart setting in linux bootm Signed-off-by: Kumar Gala Acked-by: Marian Balakowicz --- lib_arm/bootm.c | 3 +++ lib_avr32/bootm.c | 3 +++ lib_blackfin/bootm.c | 3 +++ lib_i386/bootm.c | 3 +++ lib_m68k/bootm.c | 5 ++++- lib_microblaze/bootm.c | 3 +++ lib_mips/bootm.c | 3 +++ lib_nios2/bootm.c | 3 +++ lib_ppc/bootm.c | 5 ++++- lib_sh/bootm.c | 3 +++ 10 files changed, 32 insertions(+), 2 deletions(-) diff --git a/lib_arm/bootm.c b/lib_arm/bootm.c index e1a9ee287..77d35fcc6 100644 --- a/lib_arm/bootm.c +++ b/lib_arm/bootm.c @@ -133,6 +133,9 @@ void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], setup_end_tag (bd); #endif + if (!images->autostart) + return ; + /* we assume that the kernel is in place */ printf ("\nStarting kernel ...\n\n"); diff --git a/lib_avr32/bootm.c b/lib_avr32/bootm.c index 69a69dfa6..918e4cfad 100644 --- a/lib_avr32/bootm.c +++ b/lib_avr32/bootm.c @@ -214,6 +214,9 @@ void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], params = setup_ethernet_tags(params); setup_end_tag(params); + if (!images->autostart) + return ; + printf("\nStarting kernel at %p (params at %p)...\n\n", theKernel, params_start); diff --git a/lib_blackfin/bootm.c b/lib_blackfin/bootm.c index 26ac88b26..33979a9fb 100644 --- a/lib_blackfin/bootm.c +++ b/lib_blackfin/bootm.c @@ -53,6 +53,9 @@ void do_bootm_linux(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[], char *cmdline; ulong ep = 0; + if (!images->autostart) + return ; + #ifdef SHARED_RESOURCES swap_to(FLASH); #endif diff --git a/lib_i386/bootm.c b/lib_i386/bootm.c index aea58d178..89a423c24 100644 --- a/lib_i386/bootm.c +++ b/lib_i386/bootm.c @@ -72,6 +72,9 @@ void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], } + if (!images->autostart) + return ; + #ifdef DEBUG printf ("## Transferring control to Linux (at address %08x) ...\n", (u32)base_ptr); diff --git a/lib_m68k/bootm.c b/lib_m68k/bootm.c index eca044ece..e12d1d4aa 100644 --- a/lib_m68k/bootm.c +++ b/lib_m68k/bootm.c @@ -127,6 +127,8 @@ void do_bootm_linux(cmd_tbl_t * cmdtp, int flag, show_boot_progress (15); + if (!images->autostart) + return; /* * Linux Kernel Parameters (passing board info data): * r3: ptr to board info data @@ -140,7 +142,8 @@ void do_bootm_linux(cmd_tbl_t * cmdtp, int flag, return ; error: - do_reset (cmdtp, flag, argc, argv); + if (images->autostart) + do_reset (cmdtp, flag, argc, argv); return ; } diff --git a/lib_microblaze/bootm.c b/lib_microblaze/bootm.c index 5881df64f..99c453369 100644 --- a/lib_microblaze/bootm.c +++ b/lib_microblaze/bootm.c @@ -63,5 +63,8 @@ void do_bootm_linux (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[], (ulong) theKernel); #endif + if (!images->autostart) + return ; + theKernel (commandline); } diff --git a/lib_mips/bootm.c b/lib_mips/bootm.c index 998aa22c3..39869c180 100644 --- a/lib_mips/bootm.c +++ b/lib_mips/bootm.c @@ -106,6 +106,9 @@ void do_bootm_linux (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[], sprintf (env_buf, "0x%X", (uint) (gd->bd->bi_flashsize)); linux_env_set ("flash_size", env_buf); + if (!images->autostart) + return ; + /* we assume that the kernel is in place */ printf ("\nStarting kernel ...\n\n"); diff --git a/lib_nios2/bootm.c b/lib_nios2/bootm.c index 70d2bb076..4b940cb61 100644 --- a/lib_nios2/bootm.c +++ b/lib_nios2/bootm.c @@ -46,6 +46,9 @@ void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], } void (*kernel)(void) = (void (*)(void))ep; + if (!images->autostart) + return ; + /* For now we assume the Microtronix linux ... which only * needs to be called ;-) */ diff --git a/lib_ppc/bootm.c b/lib_ppc/bootm.c index 59cc2a447..1afef46df 100644 --- a/lib_ppc/bootm.c +++ b/lib_ppc/bootm.c @@ -242,6 +242,8 @@ do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], #if defined(CFG_INIT_RAM_LOCK) && !defined(CONFIG_E500) unlock_ram_in_cache(); #endif + if (!images->autostart) + return ; #if defined(CONFIG_OF_LIBFDT) if (of_flat_tree) { /* device tree; boot new style */ @@ -270,7 +272,8 @@ do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], return ; error: - do_reset (cmdtp, flag, argc, argv); + if (images->autostart) + do_reset (cmdtp, flag, argc, argv); return ; } diff --git a/lib_sh/bootm.c b/lib_sh/bootm.c index de5c9eaf3..8055841d2 100644 --- a/lib_sh/bootm.c +++ b/lib_sh/bootm.c @@ -79,6 +79,9 @@ void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], } void (*kernel) (void) = (void (*)(void))ep; + if (!images->autostart) + return ; + /* Setup parameters */ memset(PARAM, 0, 0x1000); /* Clear zero page */ strcpy(COMMAND_LINE, bootargs); -- cgit v1.2.3