aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDetlev Zundel2009-07-13 16:01:18 +0200
committerWolfgang Denk2009-07-23 21:02:07 +0200
commitca95c9df0280f40e8e4befadbaae21fa67d92331 (patch)
tree48abbc7de7f8f5227c6cd510c35981400a949389
parent982adfc610669482a32127282fe489857a92cfe3 (diff)
Add error checking for unsupported OS types.
Signed-off-by: Detlev Zundel <dzu@denx.de>
-rw-r--r--common/cmd_bootm.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index 5d5dd338e30..6b53807fbde 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -1,5 +1,5 @@
/*
- * (C) Copyright 2000-2006
+ * (C) Copyright 2000-2009
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
*
* See file CREDITS for list of people who contributed to this
@@ -548,7 +548,8 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
if (!relocated) {
int i;
for (i = 0; i < ARRAY_SIZE(boot_os); i++)
- boot_os[i] += gd->reloc_off;
+ if (boot_os[i] != NULL)
+ boot_os[i] += gd->reloc_off;
relocated = 1;
}
@@ -636,6 +637,16 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
#endif
boot_fn = boot_os[images.os.os];
+
+ if (boot_fn == NULL) {
+ if (iflag)
+ enable_interrupts();
+ printf ("ERROR: booting os '%s' (%d) is not supported\n",
+ genimg_get_os_name(images.os.os), images.os.os);
+ show_boot_progress (-8);
+ return 1;
+ }
+
boot_fn(0, argc, argv, &images);
show_boot_progress (-9);