1
0
mirror of git://projects.qi-hardware.com/xburst-tools.git synced 2024-11-26 10:09:20 +02:00

zimage: add support for the zImage format

If the kernel we found isn't an uImage, try to use it as a zImage.

Signed-off-by: Werner Almesberger <werner@openmoko.org>
This commit is contained in:
Werner Almesberger 2009-01-09 04:32:53 +00:00 committed by Andy Green
parent 188fff8fc3
commit 9ec680a757

View File

@ -313,6 +313,39 @@ static the_kernel_fn load_uimage(void *kernel_dram)
return (the_kernel_fn) (((char *)hdr) + sizeof(image_header_t)); return (the_kernel_fn) (((char *)hdr) + sizeof(image_header_t));
} }
static the_kernel_fn load_zimage(void *kernel_dram)
{
u32 magic = *(u32 *) (kernel_dram + 0x24);
u32 size = *(u32 *) (kernel_dram + 0x2c);
int got;
if (magic != 0x016f2818) {
puts("bad magic ");
print32(magic);
puts("\n");
return NULL;
}
puts(" Size: ");
printdec(size >> 10);
puts(" KiB\n");
got = read_file(this_kernel->filepath, kernel_dram, size);
if (got < 0) {
indicate(UI_IND_KERNEL_PULL_FAIL);
return NULL;
}
if (got != size) {
puts("short kernel\n");
return NULL;
}
indicate(UI_IND_KERNEL_PULL_OK);
return (the_kernel_fn) kernel_dram;
}
static void try_this_kernel(void) static void try_this_kernel(void)
{ {
the_kernel_fn the_kernel; the_kernel_fn the_kernel;
@ -363,6 +396,8 @@ static void try_this_kernel(void)
return; return;
the_kernel = load_uimage(kernel_dram); the_kernel = load_uimage(kernel_dram);
if (!the_kernel)
the_kernel = load_zimage(kernel_dram);
if (!the_kernel) if (!the_kernel)
return; return;