powerpc: Fix 32-bit SMP boot on CHRP
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Mon, 13 Oct 2008 18:38:48 +0000 (18:38 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Tue, 14 Oct 2008 23:13:29 +0000 (10:13 +1100)
prom_init was changed to take a new argument, the address
where the kernel is loaded, which is now used to copy the
SMP spin loop down before use.

However, only head_64.S was adapted to pass this new value,
not head_32.S, thus breaking SMP boot on 32-bit SMP CHRP
machines.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/kernel/head_32.S

index a6de6dbc5ed8510465af4628c90ec4dc2436812d..0c326823c6d4caf088663efd2c68804c6696d983 100644 (file)
@@ -110,6 +110,12 @@ __start:
 #ifdef CONFIG_PPC_MULTIPLATFORM
        cmpwi   0,r5,0
        beq     1f
+
+       /* find out where we are now */
+       bcl     20,31,$+4
+0:     mflr    r8                      /* r8 = runtime addr here */
+       addis   r8,r8,(_stext - 0b)@ha
+       addi    r8,r8,(_stext - 0b)@l   /* current runtime base addr */
        bl      prom_init
        trap
 #endif