[PATCH 5/7] bootwrapper: missing relocation in crt0.S
Milton Miller
miltonm at bga.com
Tue Mar 20 07:58:05 EST 2007
crt0.S had provisions to provide run address relocaton to got2 and
cache flush, but not on the bss clear or stack pointer load. Apply
the same fixup for them.
---
Compiles and links. Stack is created within the image when linked at
4M and run at 0. Did not verify bss relocation.
crt0.S | 9 +++++++++
1 file changed, 9 insertions(+)
Index: kernel/arch/powerpc/boot/crt0.S
===================================================================
--- kernel.orig/arch/powerpc/boot/crt0.S 2007-03-16 23:22:00.000000000 -0500
+++ kernel/arch/powerpc/boot/crt0.S 2007-03-16 23:42:42.000000000 -0500
@@ -63,21 +63,30 @@ _zimage_start:
/* Clear the BSS */
lis r9,__bss_start at ha
addi r9,r9,__bss_start at l
+ add r9,r0,r9
lis r8,_end at ha
addi r8,r8,_end at l
+ add r8,r0,r8
li r0,0
5: stw r0,0(r9)
addi r9,r9,4
cmplw cr0,r9,r8
blt 5b
+ /* recreate relocation offset */
+ lis r9,_end at ha
+ addi r9,r9,_end at l
+ subf r0,r9,r8
+
/* Possibly set up a custom stack */
.weak _platform_stack_top
lis r8,_platform_stack_top at ha
addi r8,r8,_platform_stack_top at l
cmpwi r8,0
beq 6f
+ add r8,r0,r8
lwz r1,0(r8)
+ add r1,r0,r1
li r0,0
stwu r0,-16(r1) /* establish a stack frame */
6:
More information about the Linuxppc-dev
mailing list