# define CHUNKSZ (64 * 1024)
#endif
-int gunzip (void *, int, unsigned char *, int *);
+int gunzip (void *, int, unsigned char *, unsigned long *);
static void *zalloc(void *, unsigned, unsigned);
static void zfree(void *, void *, unsigned);
} else
#endif /* __I386__ */
{
- printf ("Bad Magic Number\n");
+ puts ("Bad Magic Number\n");
SHOW_BOOT_PROGRESS (-1);
return 1;
}
hdr->ih_hcrc = 0;
if (crc32 (0, (char *)data, len) != checksum) {
- printf ("Bad Header Checksum\n");
+ puts ("Bad Header Checksum\n");
SHOW_BOOT_PROGRESS (-2);
return 1;
}
#endif
if (verify) {
- printf (" Verifying Checksum ... ");
+ puts (" Verifying Checksum ... ");
if (crc32 (0, (char *)data, len) != ntohl(hdr->ih_dcrc)) {
printf ("Bad Data CRC\n");
SHOW_BOOT_PROGRESS (-3);
return 1;
}
- printf ("OK\n");
+ puts ("OK\n");
}
SHOW_BOOT_PROGRESS (4);
if (hdr->ih_arch != IH_CPU_NIOS)
#elif defined(__M68K__)
if (hdr->ih_arch != IH_CPU_M68K)
+#elif defined(__microblaze__)
+ if (hdr->ih_arch != IH_CPU_MICROBLAZE)
+#elif defined(__nios2__)
+ if (hdr->ih_arch != IH_CPU_NIOS2)
#else
# error Unknown CPU type
#endif
name = "Standalone Application";
/* A second argument overwrites the load address */
if (argc > 2) {
- hdr->ih_load = simple_strtoul(argv[2], NULL, 16);
+ hdr->ih_load = htonl(simple_strtoul(argv[2], NULL, 16));
}
break;
case IH_TYPE_KERNEL:
name = "Kernel Image";
break;
- case IH_TYPE_MULTI:
+ case IH_TYPE_MULTI:
name = "Multi-File Image";
len = ntohl(len_ptr[0]);
/* OS kernel is always the first image */
case IH_COMP_GZIP:
printf (" Uncompressing %s ... ", name);
if (gunzip ((void *)ntohl(hdr->ih_load), unc_len,
- (uchar *)data, (int *)&len) != 0) {
- printf ("GUNZIP ERROR - must RESET board to recover\n");
+ (uchar *)data, &len) != 0) {
+ puts ("GUNZIP ERROR - must RESET board to recover\n");
SHOW_BOOT_PROGRESS (-6);
do_reset (cmdtp, flag, argc, argv);
}
#ifdef CONFIG_BZIP2
case IH_COMP_BZIP2:
printf (" Uncompressing %s ... ", name);
+ /*
+ * If we've got less than 4 MB of malloc() space,
+ * use slower decompression algorithm which requires
+ * at most 2300 KB of memory.
+ */
i = BZ2_bzBuffToBuffDecompress ((char*)ntohl(hdr->ih_load),
- &unc_len, (char *)data, len, 0, 0);
+ &unc_len, (char *)data, len,
+ CFG_MALLOC_LEN < (4096 * 1024), 0);
if (i != BZ_OK) {
printf ("BUNZIP2 ERROR %d - must RESET board to recover\n", i);
SHOW_BOOT_PROGRESS (-6);
SHOW_BOOT_PROGRESS (-7);
return 1;
}
- printf ("OK\n");
+ puts ("OK\n");
SHOW_BOOT_PROGRESS (7);
switch (hdr->ih_type) {
SHOW_BOOT_PROGRESS (-9);
#ifdef DEBUG
- printf ("\n## Control returned to monitor - resetting...\n");
+ puts ("\n## Control returned to monitor - resetting...\n");
do_reset (cmdtp, flag, argc, argv);
#endif
return 1;
bootm, CFG_MAXARGS, 1, do_bootm,
"bootm - boot application image from memory\n",
"[addr [arg ...]]\n - boot application image stored in memory\n"
- " passing arguments 'arg ...'; when booting a Linux kernel,\n"
- " 'arg' can be the address of an initrd image\n"
+ "\tpassing arguments 'arg ...'; when booting a Linux kernel,\n"
+ "\t'arg' can be the address of an initrd image\n"
);
#ifdef CONFIG_SILENT_CONSOLE
/* convert all clock information to MHz */
kbd->bi_intfreq /= 1000000L;
kbd->bi_busfreq /= 1000000L;
-#if defined(CONFIG_8260) || defined(CONFIG_MPC8560)
+#if defined(CONFIG_MPC8220)
+ kbd->bi_inpfreq /= 1000000L;
+ kbd->bi_pcifreq /= 1000000L;
+ kbd->bi_pevfreq /= 1000000L;
+ kbd->bi_flbfreq /= 1000000L;
+ kbd->bi_vcofreq /= 1000000L;
+#endif
+#if defined(CONFIG_CPM2)
kbd->bi_cpmfreq /= 1000000L;
kbd->bi_brgfreq /= 1000000L;
kbd->bi_sccfreq /= 1000000L;
kbd->bi_vco /= 1000000L;
-#endif /* CONFIG_8260 */
-#if defined(CONFIG_MPC5XXX)
+#endif
+#if defined(CONFIG_MPC5xxx)
kbd->bi_ipbfreq /= 1000000L;
kbd->bi_pcifreq /= 1000000L;
-#endif /* CONFIG_MPC5XXX */
+#endif /* CONFIG_MPC5xxx */
}
kernel = (void (*)(bd_t *, ulong, ulong, ulong, ulong))hdr->ih_ep;
memmove (&header, (char *)addr, sizeof(image_header_t));
if (hdr->ih_magic != IH_MAGIC) {
- printf ("Bad Magic Number\n");
+ puts ("Bad Magic Number\n");
SHOW_BOOT_PROGRESS (-10);
do_reset (cmdtp, flag, argc, argv);
}
hdr->ih_hcrc = 0;
if (crc32 (0, (char *)data, len) != checksum) {
- printf ("Bad Header Checksum\n");
+ puts ("Bad Header Checksum\n");
SHOW_BOOT_PROGRESS (-11);
do_reset (cmdtp, flag, argc, argv);
}
ulong cdata = data, edata = cdata + len;
#endif /* CONFIG_HW_WATCHDOG || CONFIG_WATCHDOG */
- printf (" Verifying Checksum ... ");
+ puts (" Verifying Checksum ... ");
#if defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG)
#endif /* CONFIG_HW_WATCHDOG || CONFIG_WATCHDOG */
if (csum != hdr->ih_dcrc) {
- printf ("Bad Data CRC\n");
+ puts ("Bad Data CRC\n");
SHOW_BOOT_PROGRESS (-12);
do_reset (cmdtp, flag, argc, argv);
}
- printf ("OK\n");
+ puts ("OK\n");
}
SHOW_BOOT_PROGRESS (11);
if ((hdr->ih_os != IH_OS_LINUX) ||
(hdr->ih_arch != IH_CPU_PPC) ||
(hdr->ih_type != IH_TYPE_RAMDISK) ) {
- printf ("No Linux PPC Ramdisk Image\n");
+ puts ("No Linux PPC Ramdisk Image\n");
SHOW_BOOT_PROGRESS (-13);
do_reset (cmdtp, flag, argc, argv);
}
#else /* !(CONFIG_HW_WATCHDOG || CONFIG_WATCHDOG) */
memmove ((void *)initrd_start, (void *)data, len);
#endif /* CONFIG_HW_WATCHDOG || CONFIG_WATCHDOG */
- printf ("OK\n");
+ puts ("OK\n");
}
} else {
initrd_start = 0;
memmove (&header, (char *)addr, sizeof(image_header_t));
if (ntohl(hdr->ih_magic) != IH_MAGIC) {
- printf (" Bad Magic Number\n");
+ puts (" Bad Magic Number\n");
return 1;
}
hdr->ih_hcrc = 0;
if (crc32 (0, (char *)data, len) != checksum) {
- printf (" Bad Header Checksum\n");
+ puts (" Bad Header Checksum\n");
return 1;
}
data = addr + sizeof(image_header_t);
len = ntohl(hdr->ih_size);
- printf (" Verifying Checksum ... ");
+ puts (" Verifying Checksum ... ");
if (crc32 (0, (char *)data, len) != ntohl(hdr->ih_dcrc)) {
- printf (" Bad Data CRC\n");
+ puts (" Bad Data CRC\n");
return 1;
}
- printf ("OK\n");
+ puts ("OK\n");
return 0;
}
data = (ulong)hdr + sizeof(image_header_t);
len = ntohl(hdr->ih_size);
- printf (" Verifying Checksum ... ");
+ puts (" Verifying Checksum ... ");
if (crc32 (0, (char *)data, len) != ntohl(hdr->ih_dcrc)) {
- printf (" Bad Data CRC\n");
+ puts (" Bad Data CRC\n");
}
- printf ("OK\n");
+ puts ("OK\n");
next_sector: ;
}
next_bank: ;
tm.tm_year, tm.tm_mon, tm.tm_mday,
tm.tm_hour, tm.tm_min, tm.tm_sec);
#endif /* CFG_CMD_DATE, CONFIG_TIMESTAMP */
- printf (" Image Type: "); print_type(hdr); printf ("\n");
- printf (" Data Size: %d Bytes = ", ntohl(hdr->ih_size));
+ puts (" Image Type: "); print_type(hdr);
+ printf ("\n Data Size: %d Bytes = ", ntohl(hdr->ih_size));
print_size (ntohl(hdr->ih_size), "\n");
- printf (" Load Address: %08x\n", ntohl(hdr->ih_load));
- printf (" Entry Point: %08x\n", ntohl(hdr->ih_ep));
+ printf (" Load Address: %08x\n"
+ " Entry Point: %08x\n",
+ ntohl(hdr->ih_load), ntohl(hdr->ih_ep));
if (hdr->ih_type == IH_TYPE_MULTI) {
int i;
ulong len;
ulong *len_ptr = (ulong *)((ulong)hdr + sizeof(image_header_t));
- printf (" Contents:\n");
+ puts (" Contents:\n");
for (i=0; (len = ntohl(*len_ptr)); ++i, ++len_ptr) {
printf (" Image %d: %8ld Bytes = ", i, len);
print_size (len, "\n");
case IH_CPU_SPARC: arch = "SPARC"; break;
case IH_CPU_SPARC64: arch = "SPARC 64 Bit"; break;
case IH_CPU_M68K: arch = "M68K"; break;
+ case IH_CPU_MICROBLAZE: arch = "Microblaze"; break;
+ case IH_CPU_NIOS: arch = "Nios"; break;
+ case IH_CPU_NIOS2: arch = "Nios-II"; break;
default: arch = "Unknown Architecture"; break;
}
#define DEFLATED 8
-int gunzip(void *dst, int dstlen, unsigned char *src, int *lenp)
+int gunzip(void *dst, int dstlen, unsigned char *src, unsigned long *lenp)
{
z_stream s;
int r, i, flags;
i = 10;
flags = src[3];
if (src[2] != DEFLATED || (flags & RESERVED) != 0) {
- printf ("Error: Bad gzipped data\n");
+ puts ("Error: Bad gzipped data\n");
return (-1);
}
if ((flags & EXTRA_FIELD) != 0)
if ((flags & HEAD_CRC) != 0)
i += 2;
if (i >= *lenp) {
- printf ("Error: gunzip out of data in header\n");
+ puts ("Error: gunzip out of data in header\n");
return (-1);
}