powerpc: Change the default link address for pSeries zImage kernels

Currently we set the start of the .text section to be 4Mb for pSeries.
In situations where the zImage is > 8Mb we'll fail to boot (due to
overlapping with OF).  Move .text in a zImage from 4MB to 64MB
(well past OF).

We still will not be able to load large zImage unless we also move OF,
to that end, add a note to the zImage ELF to move OF to 32Mb.  If this
is the very first kernel booted then we'll need to move OF manually by
setting real-base.

Signed-off-by: Tony Breeds <tony@bakeyournoodle.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
Tony Breeds
2008-06-24 14:20:29 +10:00
committed by Paul Mackerras
parent c230328def
commit 9b09c6d909
5 changed files with 25 additions and 6 deletions

View File

@@ -168,8 +168,19 @@ void *of_claim(unsigned long virt, unsigned long size, unsigned long align)
void *of_vmlinux_alloc(unsigned long size)
{
void *p = malloc(size);
unsigned long start = (unsigned long)_start, end = (unsigned long)_end;
void *addr;
void *p;
/* With some older POWER4 firmware we need to claim the area the kernel
* will reside in. Newer firmwares don't need this so we just ignore
* the return value.
*/
addr = of_claim(start, end - start, 0);
printf("Trying to claim from 0x%lx to 0x%lx (0x%lx) got %p\r\n",
start, end, end - start, addr);
p = malloc(size);
if (!p)
fatal("Can't allocate memory for kernel image!\n\r");