aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/switch_cpu.S
diff options
context:
space:
mode:
authorMichael Holzheu <holzheu@linux.vnet.ibm.com>2011-04-04 09:43:30 +0200
committerMartin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com>2011-04-04 09:43:32 +0200
commit034e9e966cd86e5d8062cf0b3daba4bde187986c (patch)
tree9c6c166b27e1662b11254940d039121537dcbd25 /arch/s390/kernel/switch_cpu.S
parent65a94b1417badaee2ed923fd07e23b651b25c729 (diff)
downloadkernel_samsung_smdk4412-034e9e966cd86e5d8062cf0b3daba4bde187986c.zip
kernel_samsung_smdk4412-034e9e966cd86e5d8062cf0b3daba4bde187986c.tar.gz
kernel_samsung_smdk4412-034e9e966cd86e5d8062cf0b3daba4bde187986c.tar.bz2
[S390] Fix parameter passing for smp_switch_to_cpu()
After the execution has been switched to the destination CPU, the target function is called with the wrong parameter. According to the C calling convention on s390, the first parameter should be loaded into register 2. Currently in smp_restart_cpu() it is stored in register 3. To fix this, we load the parameter into the correct register 2. Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/kernel/switch_cpu.S')
-rw-r--r--arch/s390/kernel/switch_cpu.S4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/s390/kernel/switch_cpu.S b/arch/s390/kernel/switch_cpu.S
index 469f11b..20530dd 100644
--- a/arch/s390/kernel/switch_cpu.S
+++ b/arch/s390/kernel/switch_cpu.S
@@ -46,7 +46,9 @@ smp_restart_cpu:
ltr %r4,%r4 /* New stack ? */
jz 1f
lr %r15,%r4
-1: basr %r14,%r2
+1: lr %r14,%r2 /* r14: Function to call */
+ lr %r2,%r3 /* r2 : Parameter for function*/
+ basr %r14,%r14 /* Call function */
.gprregs_addr:
.long .gprregs