Commit 835c031c authored by Tiejun Chen's avatar Tiejun Chen Committed by Scott Wood

powerpc/booke64: Fix args to copy_and_flush

Convert r4/r5, not r6, to a virtual address when calling
copy_and_flush.  Otherwise, r3 is already virtual, and copy_to_flush
tries to access r3+r6, PAGE_OFFSET gets added twice.

This isn't normally seen because on book3e we normally enter with
the kernel at zero and thus skip copy_to_flush -- but it will be
needed for kexec support.
Signed-off-by: default avatarTiejun Chen <tiejun.chen@windriver.com>
[scottwood: split patch and rewrote changelog]
Signed-off-by: default avatarScott Wood <scottwood@freescale.com>
parent 68d10140
...@@ -474,15 +474,15 @@ __after_prom_start: ...@@ -474,15 +474,15 @@ __after_prom_start:
*/ */
li r3,0 /* target addr */ li r3,0 /* target addr */
#ifdef CONFIG_PPC_BOOK3E #ifdef CONFIG_PPC_BOOK3E
tovirt(r3,r3) /* on booke, we already run at PAGE_OFFSET */ tovirt(r3,r3) /* on booke, we already run at PAGE_OFFSET */
#endif #endif
mr. r4,r26 /* In some cases the loader may */ mr. r4,r26 /* In some cases the loader may */
#if defined(CONFIG_PPC_BOOK3E)
tovirt(r4,r4)
#endif
beq 9f /* have already put us at zero */ beq 9f /* have already put us at zero */
li r6,0x100 /* Start offset, the first 0x100 */ li r6,0x100 /* Start offset, the first 0x100 */
/* bytes were copied earlier. */ /* bytes were copied earlier. */
#ifdef CONFIG_PPC_BOOK3E
tovirt(r6,r6) /* on booke, we already run at PAGE_OFFSET */
#endif
#ifdef CONFIG_RELOCATABLE #ifdef CONFIG_RELOCATABLE
/* /*
...@@ -514,6 +514,9 @@ __after_prom_start: ...@@ -514,6 +514,9 @@ __after_prom_start:
p_end: .llong _end - _stext p_end: .llong _end - _stext
4: /* Now copy the rest of the kernel up to _end */ 4: /* Now copy the rest of the kernel up to _end */
#if defined(CONFIG_PPC_BOOK3E)
tovirt(r26,r26)
#endif
addis r5,r26,(p_end - _stext)@ha addis r5,r26,(p_end - _stext)@ha
ld r5,(p_end - _stext)@l(r5) /* get _end */ ld r5,(p_end - _stext)@l(r5) /* get _end */
5: bl copy_and_flush /* copy the rest */ 5: bl copy_and_flush /* copy the rest */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment