summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/image.c32
-rw-r--r--include/image.h5
-rw-r--r--lib_arm/bootm.c6
-rw-r--r--lib_avr32/bootm.c6
-rw-r--r--lib_i386/bootm.c7
-rw-r--r--lib_m68k/bootm.c5
-rw-r--r--lib_mips/bootm.c7
-rw-r--r--lib_ppc/bootm.c5
8 files changed, 36 insertions, 37 deletions
diff --git a/common/image.c b/common/image.c
index 3b15853c9..6458fb13f 100644
--- a/common/image.c
+++ b/common/image.c
@@ -66,9 +66,8 @@ extern int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
DECLARE_GLOBAL_DATA_PTR;
-static image_header_t* image_get_ramdisk (cmd_tbl_t *cmdtp, int flag,
- int argc, char *argv[],
- ulong rd_addr, uint8_t arch, int verify);
+static image_header_t* image_get_ramdisk (ulong rd_addr, uint8_t arch,
+ int verify);
#else
#include "mkimage.h"
#include <time.h>
@@ -379,10 +378,6 @@ inline void image_print_contents_noindent (image_header_t *hdr)
#ifndef USE_HOSTCC
/**
* image_get_ramdisk - get and verify ramdisk image
- * @cmdtp: command table pointer
- * @flag: command flag
- * @argc: command argument count
- * @argv: command argument list
* @rd_addr: ramdisk image start address
* @arch: expected ramdisk architecture
* @verify: checksum verification flag
@@ -399,9 +394,8 @@ inline void image_print_contents_noindent (image_header_t *hdr)
* pointer to a ramdisk image header, if image was found and valid
* otherwise, return NULL
*/
-static image_header_t* image_get_ramdisk (cmd_tbl_t *cmdtp, int flag,
- int argc, char *argv[],
- ulong rd_addr, uint8_t arch, int verify)
+static image_header_t* image_get_ramdisk (ulong rd_addr, uint8_t arch,
+ int verify)
{
image_header_t *rd_hdr;
@@ -748,8 +742,6 @@ ulong genimg_get_image (ulong img_addr)
/**
* boot_get_ramdisk - main ramdisk handling routine
- * @cmdtp: command table pointer
- * @flag: command flag
* @argc: command argument count
* @argv: command argument list
* @images: pointer to the bootm images structure
@@ -763,14 +755,15 @@ ulong genimg_get_image (ulong img_addr)
* - commandline provided address of decicated ramdisk image.
*
* returns:
+ * 0, if ramdisk image was found and valid, or skiped
* rd_start and rd_end are set to ramdisk start/end addresses if
* ramdisk image is found and valid
+ *
+ * 1, if ramdisk image is found but corrupted
* rd_start and rd_end are set to 0 if no ramdisk exists
- * return 1 if ramdisk image is found but corrupted
*/
-int boot_get_ramdisk (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
- bootm_headers_t *images, uint8_t arch,
- ulong *rd_start, ulong *rd_end)
+int boot_get_ramdisk (int argc, char *argv[], bootm_headers_t *images,
+ uint8_t arch, ulong *rd_start, ulong *rd_end)
{
ulong rd_addr, rd_load;
ulong rd_data, rd_len;
@@ -837,8 +830,8 @@ int boot_get_ramdisk (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
printf ("## Loading init Ramdisk from Legacy "
"Image at %08lx ...\n", rd_addr);
- rd_hdr = image_get_ramdisk (cmdtp, flag, argc, argv,
- rd_addr, arch, images->verify);
+ rd_hdr = image_get_ramdisk (rd_addr, arch,
+ images->verify);
if (rd_hdr == NULL)
return 1;
@@ -901,8 +894,7 @@ int boot_get_ramdisk (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
break;
#endif
default:
- printf ("Wrong Image Format for %s command\n",
- cmdtp->name);
+ puts ("Wrong Ramdisk Image Format\n");
rd_data = rd_len = rd_load = 0;
}
diff --git a/include/image.h b/include/image.h
index 681c753d1..6fca6f4d4 100644
--- a/include/image.h
+++ b/include/image.h
@@ -250,9 +250,8 @@ int genimg_get_comp_id (const char *name);
int genimg_get_format (void *img_addr);
ulong genimg_get_image (ulong img_addr);
-int boot_get_ramdisk (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
- bootm_headers_t *images, uint8_t arch,
- ulong *rd_start, ulong *rd_end);
+int boot_get_ramdisk (int argc, char *argv[], bootm_headers_t *images,
+ uint8_t arch, ulong *rd_start, ulong *rd_end);
#if defined(CONFIG_PPC) || defined(CONFIG_M68K)
int boot_ramdisk_high (struct lmb *lmb, ulong rd_data, ulong rd_len,
diff --git a/lib_arm/bootm.c b/lib_arm/bootm.c
index 865e711e9..08eef0bc2 100644
--- a/lib_arm/bootm.c
+++ b/lib_arm/bootm.c
@@ -95,8 +95,10 @@ void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
printf ("Using machid 0x%x from environment\n", machid);
}
- boot_get_ramdisk (cmdtp, flag, argc, argv, images,
- IH_ARCH_ARM, &initrd_start, &initrd_end);
+ ret = boot_get_ramdisk (argc, argv, images, IH_ARCH_ARM,
+ &initrd_start, &initrd_end);
+ if (ret)
+ do_reset (cmdtp, flag, argc, argv);
show_boot_progress (15);
diff --git a/lib_avr32/bootm.c b/lib_avr32/bootm.c
index e8e537a2c..c9a019002 100644
--- a/lib_avr32/bootm.c
+++ b/lib_avr32/bootm.c
@@ -196,8 +196,10 @@ void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
}
theKernel = (void *)ep;
- boot_get_ramdisk (cmdtp, flag, argc, argv, images,
- IH_ARCH_AVR32, &initrd_start, &initrd_end);
+ ret = boot_get_ramdisk (argc, argv, images, IH_ARCH_AVR32,
+ &initrd_start, &initrd_end);
+ if (ret)
+ do_reset (cmdtp, flag, argc, argv);
show_boot_progress (15);
diff --git a/lib_i386/bootm.c b/lib_i386/bootm.c
index 76bcf6cd8..b4a52fa21 100644
--- a/lib_i386/bootm.c
+++ b/lib_i386/bootm.c
@@ -39,9 +39,12 @@ void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
ulong initrd_start, initrd_end;
ulong ep;
image_header_t *hdr;
+ int ret;
- boot_get_ramdisk (cmdtp, flag, argc, argv, images,
- IH_ARCH_I386, &initrd_start, &initrd_end);
+ ret = boot_get_ramdisk (argc, argv, images, IH_ARCH_I386,
+ &initrd_start, &initrd_end);
+ if (ret)
+ do_reset (cmdtp, flag, argc, argv);
if (images->legacy_hdr_valid) {
hdr = images->legacy_hdr_os;
diff --git a/lib_m68k/bootm.c b/lib_m68k/bootm.c
index fba749909..f185beaa9 100644
--- a/lib_m68k/bootm.c
+++ b/lib_m68k/bootm.c
@@ -111,9 +111,8 @@ void do_bootm_linux(cmd_tbl_t * cmdtp, int flag,
kernel = (void (*)(bd_t *, ulong, ulong, ulong, ulong))ep;
/* find ramdisk */
- ret = boot_get_ramdisk (cmdtp, flag, argc, argv, images,
- IH_ARCH_M68K, &rd_data_start, &rd_data_end);
-
+ ret = boot_get_ramdisk (argc, argv, images, IH_ARCH_M68K,
+ &rd_data_start, &rd_data_end);
if (ret)
goto error;
diff --git a/lib_mips/bootm.c b/lib_mips/bootm.c
index b336a3649..5e7a46031 100644
--- a/lib_mips/bootm.c
+++ b/lib_mips/bootm.c
@@ -53,6 +53,7 @@ void do_bootm_linux (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[],
void (*theKernel) (int, char **, char **, int *);
char *commandline = getenv ("bootargs");
char env_buf[12];
+ int ret;
/* find kernel entry point */
if (images->legacy_hdr_valid) {
@@ -68,8 +69,10 @@ void do_bootm_linux (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[],
}
theKernel = (void (*)(int, char **, char **, int *))ep;
- boot_get_ramdisk (cmdtp, flag, argc, argv, images,
- IH_ARCH_MIPS, &initrd_start, &initrd_end);
+ ret = boot_get_ramdisk (argc, argv, images, IH_ARCH_MIPS,
+ &initrd_start, &initrd_end);
+ if (ret)
+ do_reset (cmdtp, flag, argc, argv);
show_boot_progress (15);
diff --git a/lib_ppc/bootm.c b/lib_ppc/bootm.c
index 797715773..ac06b2667 100644
--- a/lib_ppc/bootm.c
+++ b/lib_ppc/bootm.c
@@ -160,9 +160,8 @@ do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
kernel = (void (*)(bd_t *, ulong, ulong, ulong, ulong))ep;
/* find ramdisk */
- ret = boot_get_ramdisk (cmdtp, flag, argc, argv, images,
- IH_ARCH_PPC, &rd_data_start, &rd_data_end);
-
+ ret = boot_get_ramdisk (argc, argv, images, IH_ARCH_PPC,
+ &rd_data_start, &rd_data_end);
if (ret)
goto error;