Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 21ec7f6d authored by Martin Schwidefsky's avatar Martin Schwidefsky Committed by Martin Schwidefsky
Browse files

[S390] fix single stepped svcs with TRACE_IRQFLAGS=y



If irq flags tracing is enabled the TRACE_IRQS_ON macros expands to
a function call which clobbers registers %r0-%r5. The macro is used
in the code path for single stepped system calls. The argument
registers %r2-%r6 need to be restored from the stack before the system
call function is called.

Cc: stable@kernel.org
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 19b123eb
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -571,6 +571,7 @@ pgm_svcper:
	mvc	__THREAD_per+__PER_access_id(1,%r8),__LC_PER_ACCESS_ID
	oi	__TI_flags+3(%r9),_TIF_SINGLE_STEP # set TIF_SINGLE_STEP
	TRACE_IRQS_ON
	lm	%r2,%r6,SP_R2(%r15)	# load svc arguments
	stosm	__SF_EMPTY(%r15),0x03	# reenable interrupts
	b	BASED(sysc_do_svc)

+1 −0
Original line number Diff line number Diff line
@@ -549,6 +549,7 @@ pgm_svcper:
	mvc	__THREAD_per+__PER_access_id(1,%r8),__LC_PER_ACCESS_ID
	oi	__TI_flags+7(%r9),_TIF_SINGLE_STEP # set TIF_SINGLE_STEP
	TRACE_IRQS_ON
	lmg	%r2,%r6,SP_R2(%r15)	# load svc arguments
	stosm	__SF_EMPTY(%r15),0x03	# reenable interrupts
	j	sysc_do_svc