forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
powerpc/boot: Add an ePAPR compliant boot wrapper
This is a first cut at making bootwrapper code which will produce a zImage compliant with the requirements set down by ePAPR. This is a very simple bootwrapper, taking the device tree blob supplied by the ePAPR boot program and passing it on to the kernel. It builds on the earlier patch to build a relocatable ET_DYN zImage to meet the other ePAPR image requirements. For good measure we have some paranoid checks which will generate warnings if some of the ePAPR entry condition guarantees are not met. Signed-off-by: David Gibson <[email protected]> Signed-off-by: Michael Ellerman <[email protected]> Signed-off-by: Benjamin Herrenschmidt <[email protected]>
- Loading branch information
Showing
4 changed files
with
79 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
/* | ||
* Bootwrapper for ePAPR compliant firmwares | ||
* | ||
* Copyright 2010 David Gibson <[email protected]>, IBM Corporation. | ||
* | ||
* Based on earlier bootwrappers by: | ||
* (c) Benjamin Herrenschmidt <[email protected]>, IBM Corp,\ | ||
* and | ||
* Scott Wood <[email protected]> | ||
* Copyright (c) 2007 Freescale Semiconductor, Inc. | ||
* | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License version 2 as published | ||
* by the Free Software Foundation. | ||
*/ | ||
|
||
#include "ops.h" | ||
#include "stdio.h" | ||
#include "io.h" | ||
#include <libfdt.h> | ||
|
||
BSS_STACK(4096); | ||
|
||
#define EPAPR_SMAGIC 0x65504150 | ||
#define EPAPR_EMAGIC 0x45504150 | ||
|
||
static unsigned epapr_magic; | ||
static unsigned long ima_size; | ||
static unsigned long fdt_addr; | ||
|
||
static void platform_fixups(void) | ||
{ | ||
if ((epapr_magic != EPAPR_EMAGIC) | ||
&& (epapr_magic != EPAPR_SMAGIC)) | ||
fatal("r6 contained 0x%08x instead of ePAPR magic number\n", | ||
epapr_magic); | ||
|
||
if (ima_size < (unsigned long)_end) | ||
printf("WARNING: Image loaded outside IMA!" | ||
" (_end=%p, ima_size=0x%lx)\n", _end, ima_size); | ||
if (ima_size < fdt_addr) | ||
printf("WARNING: Device tree address is outside IMA!" | ||
"(fdt_addr=0x%lx, ima_size=0x%lx)\n", fdt_addr, | ||
ima_size); | ||
if (ima_size < fdt_addr + fdt_totalsize((void *)fdt_addr)) | ||
printf("WARNING: Device tree extends outside IMA!" | ||
" (fdt_addr=0x%lx, size=0x%x, ima_size=0x%lx\n", | ||
fdt_addr, fdt_totalsize((void *)fdt_addr), ima_size); | ||
} | ||
|
||
void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | ||
unsigned long r6, unsigned long r7) | ||
{ | ||
epapr_magic = r6; | ||
ima_size = r7; | ||
fdt_addr = r3; | ||
|
||
/* FIXME: we should process reserve entries */ | ||
|
||
simple_alloc_init(_end, ima_size - (unsigned long)_end, 32, 64); | ||
|
||
fdt_init((void *)fdt_addr); | ||
|
||
serial_console_init(); | ||
platform_ops.fixups = platform_fixups; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters