parisc: switch to generic kernel_execve()
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 4 Oct 2012 03:44:44 +0000 (23:44 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Sun, 14 Oct 2012 23:36:36 +0000 (19:36 -0400)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
arch/parisc/include/asm/unistd.h
arch/parisc/kernel/entry.S
arch/parisc/kernel/process.c

index d61de64..447e03c 100644 (file)
@@ -995,6 +995,7 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5)       \
 #define __ARCH_WANT_SYS_RT_SIGACTION
 #define __ARCH_WANT_SYS_RT_SIGSUSPEND
 #define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND
+#define __ARCH_WANT_KERNEL_EXECVE
 
 #endif /* __ASSEMBLY__ */
 
index 18d05e7..a26917d 100644 (file)
@@ -741,28 +741,12 @@ ENTRY(ret_from_kernel_thread)
        ldi     0, %r26
 ENDPROC(ret_from_kernel_thread)
 
-       .import sys_execve, code
-ENTRY(__execve)
-       copy    %r2, %r15
-       copy    %r30, %r16
-       ldo     PT_SZ_ALGN(%r30), %r30
-       STREG   %r26, PT_GR26(%r16)
-       STREG   %r25, PT_GR25(%r16)
-       STREG   %r24, PT_GR24(%r16)
-#ifdef CONFIG_64BIT
-       ldo     -16(%r30),%r29          /* Reference param save area */
-#endif
-       BL      sys_execve, %r2
-       copy    %r16, %r26
-
-       cmpib,=,n 0,%r28,intr_return    /* forward */
-
-       /* yes, this will trap and die. */
-       copy    %r15, %r2
-       copy    %r16, %r30
-       bv      %r0(%r2)
-       nop
-ENDPROC(__execve)
+ENTRY(ret_from_kernel_execve)
+       mfctl   %cr30, %r1
+       ldo     THREAD_SZ_ALGN(%r1), %r30
+       b       intr_return     /* forward */
+       copy    %r26,%r16       /* pt_regs into r16 */
+ENDPROC(ret_from_kernel_execve)
 
 
        /*
index b7b4126..f3f6408 100644 (file)
@@ -337,16 +337,6 @@ out:
        return error;
 }
 
-extern int __execve(const char *filename,
-                   const char *const argv[],
-                   const char *const envp[], struct task_struct *task);
-int kernel_execve(const char *filename,
-                 const char *const argv[],
-                 const char *const envp[])
-{
-       return __execve(filename, argv, envp, current);
-}
-
 unsigned long
 get_wchan(struct task_struct *p)
 {