summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarian Balakowicz <m8@semihalf.com>2008-01-08 18:11:44 +0100
committerWolfgang Denk <wd@denx.de>2008-02-07 01:12:55 +0100
commit261dcf4624b25f3c551efcf8634e9194fabba9c3 (patch)
tree418fbb9ac11e38fd532c72c0078ef94439b80a13
parent559316faf7eae0614c91d77f509b57d6c4c091ba (diff)
[new uImage] Remove I386 uImage fake_header() routine
I386 targets are not using a uImage format, instead fake header is added to ram image before it is further processed by bootm. Remove this fixup and force proper uImage use for I386. Signed-off-by: Marian Balakowicz <m8@semihalf.com>
-rw-r--r--common/cmd_bootm.c18
-rw-r--r--include/asm-i386/zimage.h1
-rw-r--r--lib_i386/i386_linux.c12
-rw-r--r--lib_i386/zimage.c49
4 files changed, 1 insertions, 79 deletions
diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index fbe81d303..aa7c0f5b7 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -79,10 +79,6 @@ static int do_imls (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
static void print_type (image_header_t *hdr);
-#ifdef __I386__
-image_header_t *fake_header(image_header_t *hdr, void *ptr, int size);
-#endif
-
/*
* Continue booting an OS image; caller already has:
* - copied image header to global variable `header'
@@ -157,22 +153,10 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
#endif
memmove (&header, (char *)addr, image_get_header_size ());
- if (!image_check_magic (hdr)) {
-#ifdef __I386__ /* correct image format not implemented yet - fake it */
- if (fake_header(hdr, (void*)addr, -1) != NULL) {
- /* to compensate for the addition below */
- addr -= image_get_header_size ();
- /* turnof verify,
- * fake_header() does not fake the data crc
- */
- verify = 0;
- } else
-#endif /* __I386__ */
- {
+ if (!image_check_magic(hdr)) {
puts ("Bad Magic Number\n");
show_boot_progress (-1);
return 1;
- }
}
show_boot_progress (2);
diff --git a/include/asm-i386/zimage.h b/include/asm-i386/zimage.h
index c7103b1f3..b6266e456 100644
--- a/include/asm-i386/zimage.h
+++ b/include/asm-i386/zimage.h
@@ -70,6 +70,5 @@ void *load_zimage(char *image, unsigned long kernel_size,
int auto_boot);
void boot_zimage(void *setup_base);
-image_header_t *fake_zimage_header(image_header_t *hdr, void *ptr, int size);
#endif
diff --git a/lib_i386/i386_linux.c b/lib_i386/i386_linux.c
index 67a78c4e3..6cb021a19 100644
--- a/lib_i386/i386_linux.c
+++ b/lib_i386/i386_linux.c
@@ -33,18 +33,6 @@ extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
extern image_header_t header; /* from cmd_bootm.c */
-
-image_header_t *fake_header(image_header_t *hdr, void *ptr, int size)
-{
- /* try each supported image type in order */
- if (NULL != fake_zimage_header(hdr, ptr, size)) {
- return hdr;
- }
-
- return NULL;
-}
-
-
void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
ulong addr, ulong *len_ptr, int verify)
{
diff --git a/lib_i386/zimage.c b/lib_i386/zimage.c
index 20f9f8d84..c3b4e597a 100644
--- a/lib_i386/zimage.c
+++ b/lib_i386/zimage.c
@@ -212,7 +212,6 @@ void *load_zimage(char *image, unsigned long kernel_size,
return setup_base;
}
-
void boot_zimage(void *setup_base)
{
struct pt_regs regs;
@@ -224,51 +223,3 @@ void boot_zimage(void *setup_base)
regs.eflags = 0;
enter_realmode(((u32)setup_base+SETUP_START_OFFSET)>>4, 0, &regs, &regs);
}
-
-
-image_header_t *fake_zimage_header(image_header_t *hdr, void *ptr, int size)
-{
- /* There is no way to know the size of a zImage ... *
- * so we assume that 2MB will be enough for now */
-#define ZIMAGE_SIZE 0x200000
-
- /* load a 1MB, the loaded will have to be moved to its final
- * position again later... */
-#define ZIMAGE_LOAD 0x100000
-
- ulong checksum;
-
- if (KERNEL_MAGIC != *(u16*)(ptr + BOOT_FLAG_OFF)) {
- /* not a zImage or bzImage */
- return NULL;
- }
-
- if (-1 == size) {
- size = ZIMAGE_SIZE;
- }
-#if 0
- checksum = crc32 (0, ptr, size);
-#else
- checksum = 0;
-#endif
- memset(hdr, 0, image_get_header_size ());
-
- /* Build new header */
- image_set_magic (hdr, IH_MAGIC);
- image_set_time (hdr, 0);
- image_set_size (hdr, size);
- image_set_load (hdr, ZIMAGE_LOAD);
- image_set_ep (hdr, 0);
- image_set_dcrc (hdr, checksum);
- image_set_os (hdr, IH_OS_LINUX);
- image_set_arch (hdr, IH_ARCH_I386);
- image_set_type (hdr, IH_TYPE_KERNEL);
- image_set_comp (hdr, IH_COMP_NONE);
-
- image_set_name (hdr, "(none)");
-
- checksum = crc32 (0, (const char *)hdr, image_get_header_size ());
- image_set_hcrc (hdr, checksum);
-
- return hdr;
-}