aboutsummaryrefslogtreecommitdiffstats
path: root/arch/parisc
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-10-03 23:44:44 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2012-10-14 19:36:36 -0400
commit4e5ed85ab5f1c9973588d7226c2894016059d9f6 (patch)
tree20fd443d736bca2b2853628cc89e9d8bc1d9a212 /arch/parisc
parenta44e060fc523c379341e35a981c09c3953cf4ba4 (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.h1
-rw-r--r--arch/parisc/kernel/entry.S28
-rw-r--r--arch/parisc/kernel/process.c10
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
742ENDPROC(ret_from_kernel_thread) 742ENDPROC(ret_from_kernel_thread)
743 743
744 .import sys_execve, code 744ENTRY(ret_from_kernel_execve)
745ENTRY(__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) 749ENDPROC(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
765ENDPROC(__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
340extern int __execve(const char *filename,
341 const char *const argv[],
342 const char *const envp[], struct task_struct *task);
343int 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
350unsigned long 340unsigned long
351get_wchan(struct task_struct *p) 341get_wchan(struct task_struct *p)
352{ 342{