diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-10-03 23:44:44 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-10-14 19:36:36 -0400 |
commit | 4e5ed85ab5f1c9973588d7226c2894016059d9f6 (patch) | |
tree | 20fd443d736bca2b2853628cc89e9d8bc1d9a212 /arch/parisc | |
parent | a44e060fc523c379341e35a981c09c3953cf4ba4 (diff) |
parisc: switch to generic kernel_execve()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/parisc')
-rw-r--r-- | arch/parisc/include/asm/unistd.h | 1 | ||||
-rw-r--r-- | arch/parisc/kernel/entry.S | 28 | ||||
-rw-r--r-- | arch/parisc/kernel/process.c | 10 |
3 files changed, 7 insertions, 32 deletions
diff --git a/arch/parisc/include/asm/unistd.h b/arch/parisc/include/asm/unistd.h index d61de64f990a..447e03c48232 100644 --- a/arch/parisc/include/asm/unistd.h +++ b/arch/parisc/include/asm/unistd.h | |||
@@ -995,6 +995,7 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \ | |||
995 | #define __ARCH_WANT_SYS_RT_SIGACTION | 995 | #define __ARCH_WANT_SYS_RT_SIGACTION |
996 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND | 996 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND |
997 | #define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND | 997 | #define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND |
998 | #define __ARCH_WANT_KERNEL_EXECVE | ||
998 | 999 | ||
999 | #endif /* __ASSEMBLY__ */ | 1000 | #endif /* __ASSEMBLY__ */ |
1000 | 1001 | ||
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S index 18d05e7373b5..a26917da9b2f 100644 --- a/arch/parisc/kernel/entry.S +++ b/arch/parisc/kernel/entry.S | |||
@@ -741,28 +741,12 @@ ENTRY(ret_from_kernel_thread) | |||
741 | ldi 0, %r26 | 741 | ldi 0, %r26 |
742 | ENDPROC(ret_from_kernel_thread) | 742 | ENDPROC(ret_from_kernel_thread) |
743 | 743 | ||
744 | .import sys_execve, code | 744 | ENTRY(ret_from_kernel_execve) |
745 | ENTRY(__execve) | 745 | mfctl %cr30, %r1 |
746 | copy %r2, %r15 | 746 | ldo THREAD_SZ_ALGN(%r1), %r30 |
747 | copy %r30, %r16 | 747 | b intr_return /* forward */ |
748 | ldo PT_SZ_ALGN(%r30), %r30 | 748 | copy %r26,%r16 /* pt_regs into r16 */ |
749 | STREG %r26, PT_GR26(%r16) | 749 | ENDPROC(ret_from_kernel_execve) |
750 | STREG %r25, PT_GR25(%r16) | ||
751 | STREG %r24, PT_GR24(%r16) | ||
752 | #ifdef CONFIG_64BIT | ||
753 | ldo -16(%r30),%r29 /* Reference param save area */ | ||
754 | #endif | ||
755 | BL sys_execve, %r2 | ||
756 | copy %r16, %r26 | ||
757 | |||
758 | cmpib,=,n 0,%r28,intr_return /* forward */ | ||
759 | |||
760 | /* yes, this will trap and die. */ | ||
761 | copy %r15, %r2 | ||
762 | copy %r16, %r30 | ||
763 | bv %r0(%r2) | ||
764 | nop | ||
765 | ENDPROC(__execve) | ||
766 | 750 | ||
767 | 751 | ||
768 | /* | 752 | /* |
diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c index b7b4126774e0..f3f6408bfb4f 100644 --- a/arch/parisc/kernel/process.c +++ b/arch/parisc/kernel/process.c | |||
@@ -337,16 +337,6 @@ out: | |||
337 | return error; | 337 | return error; |
338 | } | 338 | } |
339 | 339 | ||
340 | extern int __execve(const char *filename, | ||
341 | const char *const argv[], | ||
342 | const char *const envp[], struct task_struct *task); | ||
343 | int kernel_execve(const char *filename, | ||
344 | const char *const argv[], | ||
345 | const char *const envp[]) | ||
346 | { | ||
347 | return __execve(filename, argv, envp, current); | ||
348 | } | ||
349 | |||
350 | unsigned long | 340 | unsigned long |
351 | get_wchan(struct task_struct *p) | 341 | get_wchan(struct task_struct *p) |
352 | { | 342 | { |