diff options
Diffstat (limited to 'arch/s390/kernel/entry.S')
| -rw-r--r-- | arch/s390/kernel/entry.S | 11 | 
1 files changed, 7 insertions, 4 deletions
diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S index 5a2f70cbd3a9..b9716a7e326d 100644 --- a/arch/s390/kernel/entry.S +++ b/arch/s390/kernel/entry.S @@ -624,12 +624,15 @@ ENTRY(mcck_int_handler)  4:	j	4b  ENDPROC(mcck_int_handler) -# -# PSW restart interrupt handler -#  ENTRY(restart_int_handler)  	ALTERNATIVE "", ".insn s,0xb2800000,_LPP_OFFSET", 40  	stg	%r15,__LC_SAVE_AREA_RESTART +	TSTMSK	__LC_RESTART_FLAGS,RESTART_FLAG_CTLREGS,4 +	jz	0f +	la	%r15,4095 +	lctlg	%c0,%c15,__LC_CREGS_SAVE_AREA-4095(%r15) +0:	larl	%r15,.Lstosm_tmp +	stosm	0(%r15),0x04			# turn dat on, keep irqs off  	lg	%r15,__LC_RESTART_STACK  	xc	STACK_FRAME_OVERHEAD(__PT_SIZE,%r15),STACK_FRAME_OVERHEAD(%r15)  	stmg	%r0,%r14,STACK_FRAME_OVERHEAD+__PT_R0(%r15) @@ -638,7 +641,7 @@ ENTRY(restart_int_handler)  	xc	0(STACK_FRAME_OVERHEAD,%r15),0(%r15)  	lg	%r1,__LC_RESTART_FN		# load fn, parm & source cpu  	lg	%r2,__LC_RESTART_DATA -	lg	%r3,__LC_RESTART_SOURCE +	lgf	%r3,__LC_RESTART_SOURCE  	ltgr	%r3,%r3				# test source cpu address  	jm	1f				# negative -> skip source stop  0:	sigp	%r4,%r3,SIGP_SENSE		# sigp sense to source cpu  | 
