Commit 1a5e3f26 authored by Heiko Carstens's avatar Heiko Carstens Committed by Vasily Gorbik
Browse files

s390/ftrace: make use of epsw to get psw mask



Finally use epsw to create a complete psw mask within pt_regs. Without
this only some bits are correct, while other bits are (incorrectly)
always zero.

The epsw instruction is quite heavy weight, however given that this
only effects ftrace_regs_caller this seems to be the right thing, so
we finally get a complete psw mask for ftrace kprobed functions.

Reviewed-by: default avatarSven Schnelle <svens@linux.ibm.com>
Acked-by: default avatarIlya Leoshkevich <iii@linux.ibm.com>
Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
parent 96f6641a
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -33,9 +33,16 @@ ENDPROC(ftrace_stub)
	stg	%r14,(__SF_GPRS+8*8)(%r15)	# save traced function caller

	.if \allregs == 1
	lghi	%r14,0				# save condition code
	ipm	%r14				# don't put any instructions
	sllg	%r14,%r14,16			# clobbering CC before this point
	# save psw mask
	# don't put any instructions clobbering CC before this point
#ifdef CONFIG_HAVE_MARCH_Z10_FEATURES
	epsw	%r1,%r14
	risbg	%r14,%r1,0,31,32
#else
	epsw	%r14,%r1
	sllg	%r14,%r14,32
	lr	%r14,%r1
#endif
	.endif

	lgr	%r1,%r15
@@ -51,7 +58,6 @@ ENDPROC(ftrace_stub)

	.if \allregs == 1
	stg	%r14,(STACK_PTREGS_PSW)(%r15)
	stosm	(STACK_PTREGS_PSW)(%r15),0
#ifdef CONFIG_HAVE_MARCH_Z10_FEATURES
	mvghi	STACK_PTREGS_FLAGS(%r15),_PIF_FTRACE_FULL_REGS
#else