Commit 0af1c530 authored by Al Viro's avatar Al Viro
Browse files

Merge branch 'arch-s390' into no-rebases

parents 42472a74 30dcb099
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -136,6 +136,7 @@ config S390
	select KTIME_SCALAR if 32BIT
	select HAVE_ARCH_SECCOMP_FILTER
	select GENERIC_KERNEL_THREAD
	select GENERIC_KERNEL_EXECVE
	select HAVE_MOD_ARCH_SPECIFIC
	select MODULES_USE_ELF_RELA

+0 −1
Original line number Diff line number Diff line
@@ -54,7 +54,6 @@
#   define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND
# endif
#define __ARCH_WANT_SYS_EXECVE
#define __ARCH_WANT_KERNEL_EXECVE

/*
 * "Conditional" syscalls
+5 −27
Original line number Diff line number Diff line
@@ -330,40 +330,18 @@ ENTRY(ret_from_fork)
	la	%r11,STACK_FRAME_OVERHEAD(%r15)
	l	%r12,__LC_THREAD_INFO
	l	%r13,__LC_SVC_NEW_PSW+4
	tm	__PT_PSW+1(%r11),0x01	# forking a kernel thread ?
	je	1f
	l	%r1,BASED(.Lschedule_tail)
	basr	%r14,%r1		# call schedule_tail
	TRACE_IRQS_ON
	ssm	__LC_SVC_NEW_PSW	# reenable interrupts
	j	sysc_tracenogo

1:	# it's a kernel thread
	st	%r15,__PT_R15(%r11)	# store stack pointer for new kthread
	l	%r1,BASED(.Lschedule_tail)
	basr	%r14,%r1		# call schedule_tail
	TRACE_IRQS_ON
	ssm	__LC_SVC_NEW_PSW	# reenable interrupts
	lm	%r9,%r11,__PT_R9(%r11)	# load gprs
	tm	__PT_PSW+1(%r11),0x01	# forking a kernel thread ?
	jne	sysc_tracenogo
	# it's a kernel thread
	lm	%r9,%r10,__PT_R9(%r11)	# load gprs
ENTRY(kernel_thread_starter)
	la	%r2,0(%r10)
	basr	%r14,%r9
	la	%r2,0
	br	%r11			# do_exit

#
# kernel_execve function needs to deal with pt_regs that is not
# at the usual place
#
ENTRY(ret_from_kernel_execve)
	ssm	__LC_PGM_NEW_PSW	# disable I/O and ext. interrupts
	lr	%r15,%r2
	lr	%r11,%r2
	ahi	%r15,-STACK_FRAME_OVERHEAD
	xc	__SF_BACKCHAIN(4,%r15),__SF_BACKCHAIN(%r15)
	l	%r12,__LC_THREAD_INFO
	ssm	__LC_SVC_NEW_PSW	# reenable interrupts
	j	sysc_return
	j	sysc_tracenogo

/*
 * Program check handler routine
+5 −21
Original line number Diff line number Diff line
@@ -352,33 +352,17 @@ sysc_tracenogo:
ENTRY(ret_from_fork)
	la	%r11,STACK_FRAME_OVERHEAD(%r15)
	lg	%r12,__LC_THREAD_INFO
	tm	__PT_PSW+1(%r11),0x01	# forking a kernel thread ?
	je	1f
	brasl	%r14,schedule_tail
	TRACE_IRQS_ON
	ssm	__LC_SVC_NEW_PSW	# reenable interrupts
	j	sysc_tracenogo
1:	# it's a kernel thread
	stg	%r15,__PT_R15(%r11)	# store stack pointer for new kthread
	brasl	%r14,schedule_tail
	TRACE_IRQS_ON
	ssm	__LC_SVC_NEW_PSW	# reenable interrupts
	lmg	%r9,%r11,__PT_R9(%r11)	# load gprs
	tm	__PT_PSW+1(%r11),0x01	# forking a kernel thread ?
	jne	sysc_tracenogo
	# it's a kernel thread
	lmg	%r9,%r10,__PT_R9(%r11)	# load gprs
ENTRY(kernel_thread_starter)
	la	%r2,0(%r10)
	basr	%r14,%r9
	la	%r2,0
	br	%r11			# do_exit

ENTRY(ret_from_kernel_execve)
	ssm	__LC_PGM_NEW_PSW	# disable I/O and ext. interrupts
	lgr	%r15,%r2
	lgr	%r11,%r2
	aghi	%r15,-STACK_FRAME_OVERHEAD
	xc	__SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15)
	lg	%r12,__LC_THREAD_INFO
	ssm	__LC_SVC_NEW_PSW	# reenable interrupts
	j	sysc_return
	j	sysc_tracenogo

/*
 * Program check handler routine