aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-10-09 23:02:25 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-10-09 23:02:25 -0400
commit42859eea96ba6beabfb0369a1eeffa3c7d2bd9cb (patch)
treefa38aeda0d6e7a4c48a882b166b8643594a1ad50 /arch/s390/include
parentf59b51fe3d3092c08d7d554ecb40db24011b2ebc (diff)
parentf322220d6159455da2b5a8a596d802c8695fed30 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal
Pull generic execve() changes from Al Viro: "This introduces the generic kernel_thread() and kernel_execve() functions, and switches x86, arm, alpha, um and s390 over to them." * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal: (26 commits) s390: convert to generic kernel_execve() s390: switch to generic kernel_thread() s390: fold kernel_thread_helper() into ret_from_fork() s390: fold execve_tail() into start_thread(), convert to generic sys_execve() um: switch to generic kernel_thread() x86, um/x86: switch to generic sys_execve and kernel_execve x86: split ret_from_fork alpha: introduce ret_from_kernel_execve(), switch to generic kernel_execve() alpha: switch to generic kernel_thread() alpha: switch to generic sys_execve() arm: get rid of execve wrapper, switch to generic execve() implementation arm: optimized current_pt_regs() arm: introduce ret_from_kernel_execve(), switch to generic kernel_execve() arm: split ret_from_fork, simplify kernel_thread() [based on patch by rmk] generic sys_execve() generic kernel_execve() new helper: current_pt_regs() preparation for generic kernel_thread() um: kill thread->forking um: let signal_delivered() do SIGTRAP on singlestepping into handler ...
Diffstat (limited to 'arch/s390/include')
-rw-r--r--arch/s390/include/asm/processor.h4
-rw-r--r--arch/s390/include/asm/unistd.h2
2 files changed, 5 insertions, 1 deletions
diff --git a/arch/s390/include/asm/processor.h b/arch/s390/include/asm/processor.h
index 56831dfa919..94e749c9023 100644
--- a/arch/s390/include/asm/processor.h
+++ b/arch/s390/include/asm/processor.h
@@ -35,6 +35,7 @@ static inline void get_cpu_id(struct cpuid *ptr)
35extern void s390_adjust_jiffies(void); 35extern void s390_adjust_jiffies(void);
36extern const struct seq_operations cpuinfo_op; 36extern const struct seq_operations cpuinfo_op;
37extern int sysctl_ieee_emulation_warnings; 37extern int sysctl_ieee_emulation_warnings;
38extern void execve_tail(void);
38 39
39/* 40/*
40 * User space process size: 2GB for 31 bit, 4TB or 8PT for 64 bit. 41 * User space process size: 2GB for 31 bit, 4TB or 8PT for 64 bit.
@@ -126,6 +127,7 @@ struct stack_frame {
126 regs->psw.mask = psw_user_bits | PSW_MASK_EA | PSW_MASK_BA; \ 127 regs->psw.mask = psw_user_bits | PSW_MASK_EA | PSW_MASK_BA; \
127 regs->psw.addr = new_psw | PSW_ADDR_AMODE; \ 128 regs->psw.addr = new_psw | PSW_ADDR_AMODE; \
128 regs->gprs[15] = new_stackp; \ 129 regs->gprs[15] = new_stackp; \
130 execve_tail(); \
129} while (0) 131} while (0)
130 132
131#define start_thread31(regs, new_psw, new_stackp) do { \ 133#define start_thread31(regs, new_psw, new_stackp) do { \
@@ -135,6 +137,7 @@ struct stack_frame {
135 __tlb_flush_mm(current->mm); \ 137 __tlb_flush_mm(current->mm); \
136 crst_table_downgrade(current->mm, 1UL << 31); \ 138 crst_table_downgrade(current->mm, 1UL << 31); \
137 update_mm(current->mm, current); \ 139 update_mm(current->mm, current); \
140 execve_tail(); \
138} while (0) 141} while (0)
139 142
140/* Forward declaration, a strange C thing */ 143/* Forward declaration, a strange C thing */
@@ -150,7 +153,6 @@ static inline void show_cacheinfo(struct seq_file *m) { }
150 153
151/* Free all resources held by a thread. */ 154/* Free all resources held by a thread. */
152extern void release_thread(struct task_struct *); 155extern void release_thread(struct task_struct *);
153extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
154 156
155/* 157/*
156 * Return saved PC of a blocked thread. 158 * Return saved PC of a blocked thread.
diff --git a/arch/s390/include/asm/unistd.h b/arch/s390/include/asm/unistd.h
index 4e64b5cd155..8192e292753 100644
--- a/arch/s390/include/asm/unistd.h
+++ b/arch/s390/include/asm/unistd.h
@@ -417,6 +417,8 @@
417# define __ARCH_WANT_COMPAT_SYS_TIME 417# define __ARCH_WANT_COMPAT_SYS_TIME
418# define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND 418# define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND
419# endif 419# endif
420#define __ARCH_WANT_SYS_EXECVE
421#define __ARCH_WANT_KERNEL_EXECVE
420 422
421/* 423/*
422 * "Conditional" syscalls 424 * "Conditional" syscalls