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>
        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
 
        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: