summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKumar Gala <galak@kernel.crashing.org>2008-02-27 21:51:51 -0600
committerMarian Balakowicz <m8@semihalf.com>2008-02-29 13:15:56 +0100
commit75fa002c47171b73fb4c1f2c2fe4d6391c136276 (patch)
treeccabb8e8cb7aaac6e3a1a40b046fe59d92832682
parentd3f2fa0d278467b2232e4eb2372f905c3febfbeb (diff)
[new uImage] Respect autostart setting in linux bootm
Signed-off-by: Kumar Gala <galak@kernel.crashing.org> Acked-by: Marian Balakowicz <m8@semihalf.com>
-rw-r--r--lib_arm/bootm.c3
-rw-r--r--lib_avr32/bootm.c3
-rw-r--r--lib_blackfin/bootm.c3
-rw-r--r--lib_i386/bootm.c3
-rw-r--r--lib_m68k/bootm.c5
-rw-r--r--lib_microblaze/bootm.c3
-rw-r--r--lib_mips/bootm.c3
-rw-r--r--lib_nios2/bootm.c3
-rw-r--r--lib_ppc/bootm.c5
-rw-r--r--lib_sh/bootm.c3
10 files changed, 32 insertions, 2 deletions
diff --git a/lib_arm/bootm.c b/lib_arm/bootm.c
index e1a9ee28714..77d35fcc656 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 69a69dfa6e8..918e4cfadf5 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 26ac88b267b..33979a9fb2c 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 aea58d178b9..89a423c2437 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 eca044ecead..e12d1d4aadd 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 5881df64f6f..99c453369d2 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 998aa22c348..39869c18008 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 70d2bb07696..4b940cb6195 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 59cc2a44718..1afef46df75 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 de5c9eaf389..8055841d2fc 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);