powerpc/fsl-booke: fix the case where we are not in the first page
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>
Sun, 4 Apr 2010 20:19:01 +0000 (22:19 +0200)
committerKumar Gala <galak@kernel.crashing.org>
Mon, 24 May 2010 19:00:53 +0000 (14:00 -0500)
During boot we change the mapping a few times until we have a "defined"
mapping. During this procedure a small 4KiB mapping is created and after
that one a 64MiB. Currently the offset of the 4KiB page in that we run
is zero because the complete startup up code is in first page which
starts at RPN zero.
If the code is recycled and moved to another location then its execution
will fail because the start address in 64 MiB mapping is computed
wrongly. It does not consider the offset to the page from the begin of
the memory.
This patch fixes this. Usually (system boot) r25 is zero so this does
not change anything unless the code is recycled.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
arch/powerpc/kernel/head_fsl_booke.S

index edd4a57fd29e154b9dc90fe1aea1cae29fb2513b..36ee1db5fc47347f9113d163d787846142f9a21a 100644 (file)
@@ -275,6 +275,7 @@ skpinv:     addi    r6,r6,1                         /* Increment */
 1:     mflr    r9
        rlwimi  r6,r9,0,20,31
        addi    r6,r6,(2f - 1b)
+       add     r6, r6, r25
        mtspr   SPRN_SRR0,r6
        mtspr   SPRN_SRR1,r7
        rfi                             /* start execution out of TLB1[0] entry */