[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>
This commit is contained in:
parent
559316faf7
commit
261dcf4624
@ -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);
|
||||
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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, ®s, ®s);
|
||||
}
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user