[POWERPC] zImage: Cleanup and improve prep_kernel()
This patch rewrites prep_kernel() in the zImage wrapper code to be clearer and more flexible. Notable changes: - Handling of the initrd image from prep_kernel() has moved into a new prep_initrd() function. - The address of the initrd image is now added as device tree properties, as the kernel expects. - We only copy a packaged initrd image to a new location if it is in danger of being clobbered when the kernel moves to its final location, instead of always. - By default we decompress the kernel directly to address 0, instead of requiring it to relocate itself. Platforms (such as OF) where doing this could clobber still-live firmware data structures can override the vmlinux_alloc hook to provide an alternate place to decompress the kernel. - We no longer pass lots of information between functions in global variables. Signed-off-by: David Gibson <dwg@au1.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
committed by
Paul Mackerras
parent
ad9d2716cf
commit
79c8541924
@ -208,6 +208,17 @@ static void of_image_hdr(const void *hdr)
|
||||
}
|
||||
}
|
||||
|
||||
static void *of_vmlinux_alloc(unsigned long size)
|
||||
{
|
||||
void *p = malloc(size);
|
||||
|
||||
if (!p) {
|
||||
printf("Can't allocate memory for kernel image!\n\r");
|
||||
exit();
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
static void of_exit(void)
|
||||
{
|
||||
call_prom("exit", 0, 0);
|
||||
@ -261,6 +272,7 @@ int platform_init(void *promptr, char *dt_blob_start, char *dt_blob_end)
|
||||
platform_ops.image_hdr = of_image_hdr;
|
||||
platform_ops.malloc = of_try_claim;
|
||||
platform_ops.exit = of_exit;
|
||||
platform_ops.vmlinux_alloc = of_vmlinux_alloc;
|
||||
|
||||
dt_ops.finddevice = of_finddevice;
|
||||
dt_ops.getprop = of_getprop;
|
||||
|
Reference in New Issue
Block a user