Skip to content

Commit

Permalink
[S390] Fix parameter passing for smp_switch_to_cpu()
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Michael Holzheu authored and Martin Schwidefsky committed Apr 4, 2011
1 parent 65a94b1 commit 034e9e9
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 2 deletions.
4 changes: 3 additions & 1 deletion arch/s390/kernel/switch_cpu.S
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 3 additions & 1 deletion arch/s390/kernel/switch_cpu64.S
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,9 @@ smp_restart_cpu:
ltgr %r4,%r4 /* New stack ? */
jz 1f
lgr %r15,%r4
1: basr %r14,%r2
1: lgr %r14,%r2 /* r14: Function to call */
lgr %r2,%r3 /* r2 : Parameter for function*/
basr %r14,%r14 /* Call function */

.section .data,"aw",@progbits
.gprregs:
Expand Down

0 comments on commit 034e9e9

Please sign in to comment.