@@ -202,6 +202,8 @@ int smp_cpu_setup(uint16_t addr, struct psw psw)
cpu->stack = (uint64_t *)alloc_pages(2);
/* Start without DAT and any other mask bits. */
+ cpu->lowcore->sw_int_psw.mask = psw.mask;
+ cpu->lowcore->sw_int_psw.addr = psw.addr;
cpu->lowcore->sw_int_grs[14] = psw.addr;
cpu->lowcore->sw_int_grs[15] = (uint64_t)cpu->stack + (PAGE_SIZE * 4);
lc->restart_new_psw.mask = 0x0000000180000000UL;
@@ -161,7 +161,8 @@ smp_cpu_setup_state:
lctlg %c0, %c0, GEN_LC_SW_INT_CRS
/* We should only go once through cpu setup and not for every restart */
stg %r14, GEN_LC_RESTART_NEW_PSW + 8
- brasl %r14, %r14
+ larl %r14, 0f
+ lpswe GEN_LC_SW_INT_PSW
/* If the function returns, just loop here */
0: j 0