Add error checking for unsupported OS types.
authorDetlev Zundel <dzu@denx.de>
Mon, 13 Jul 2009 14:01:18 +0000 (16:01 +0200)
committerWolfgang Denk <wd@denx.de>
Thu, 23 Jul 2009 19:02:07 +0000 (21:02 +0200)
Signed-off-by: Detlev Zundel <dzu@denx.de>
common/cmd_bootm.c

index 5d5dd338e30a68a71e05a64323dd7336efd76db7..6b53807fbde6e949faddcb63264be1e26885dea7 100644 (file)
@@ -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);