powerpc/kernel: Adds correct calling convention for kexec purgatory

Submitted by Matthew McClintock on Aug. 27, 2010, 9:58 p.m.


Message ID 1282946301-28207-1-git-send-email-msm@freescale.com
State Accepted, archived
Commit 4562c986f0d694124de20815adf7e1aad8a94668
Delegated to: Benjamin Herrenschmidt
Headers show

Commit Message

Matthew McClintock Aug. 27, 2010, 9:58 p.m.
Call kexec purgatory code correctly. We were getting lucky before.
If you examine the powerpc 32bit kexec "purgatory" code you will
see it expects the following:

From kexec-tools: purgatory/arch/ppc/v2wrap_32.S
-> calling convention:
->   r3 = physical number of this cpu (all cpus)
->   r4 = address of this chunk (master only)

As such, we need to set r3 to the current core, r4 happens to be
unused by purgatory at the moment but we go ahead and set it
here as well

Signed-off-by: Matthew McClintock <msm@freescale.com>
 arch/powerpc/kernel/misc_32.S |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

Patch hide | download patch | download mbox

diff --git a/arch/powerpc/kernel/misc_32.S b/arch/powerpc/kernel/misc_32.S
index 99bc652..6d1151f 100644
--- a/arch/powerpc/kernel/misc_32.S
+++ b/arch/powerpc/kernel/misc_32.S
@@ -807,6 +807,9 @@  relocate_new_kernel:
+	mfspr	r3, SPRN_PIR /* current core we are running on */
+	mr	r4, r5 /* load physical address of chunk called */
 	/* jump to the entry point, usually the setup routine */
 	mtlr	r5