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:
committed by
Paul Mackerras
parent
c230328def
commit
9b09c6d909
@@ -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");
|
||||
|
||||
|
Reference in New Issue
Block a user