c6x: switch to generic sys_execve
Signed-off-by: Mark Salter <msalter@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
39fcf44099
commit
680a14535c
4 changed files with 1 additions and 50 deletions
|
@ -44,11 +44,6 @@ extern int sys_cache_sync(unsigned long s, unsigned long e);
|
|||
struct pt_regs;
|
||||
|
||||
extern asmlinkage long sys_c6x_clone(struct pt_regs *regs);
|
||||
extern asmlinkage long sys_c6x_execve(const char __user *name,
|
||||
const char __user *const __user *argv,
|
||||
const char __user *const __user *envp,
|
||||
struct pt_regs *regs);
|
||||
|
||||
|
||||
#include <asm-generic/syscalls.h>
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#define _ASM_C6X_UNISTD_H
|
||||
|
||||
#define __ARCH_WANT_KERNEL_EXECVE
|
||||
#define __ARCH_WANT_SYS_EXECVE
|
||||
|
||||
/* Use the standard ABI for syscalls. */
|
||||
#include <asm-generic/unistd.h>
|
||||
|
|
|
@ -647,29 +647,6 @@ ENTRY(sys_rt_sigreturn)
|
|||
#endif
|
||||
ENDPROC(sys_rt_sigreturn)
|
||||
|
||||
ENTRY(sys_execve)
|
||||
ADDAW .D2 SP,2,B6 ; put regs addr in 4th parameter
|
||||
; & adjust regs stack addr
|
||||
LDW .D2T2 *+SP(REGS_B4+8),B4
|
||||
|
||||
;; c6x_execve(char *name, char **argv,
|
||||
;; char **envp, struct pt_regs *regs)
|
||||
#ifdef CONFIG_C6X_BIG_KERNEL
|
||||
|| MVKL .S1 sys_c6x_execve,A0
|
||||
MVKH .S1 sys_c6x_execve,A0
|
||||
B .S2X A0
|
||||
#else
|
||||
|| B .S2 sys_c6x_execve
|
||||
#endif
|
||||
STW .D2T2 B3,*SP--[2]
|
||||
ADDKPC .S2 ret_from_c6x_execve,B3,3
|
||||
|
||||
ret_from_c6x_execve:
|
||||
LDW .D2T2 *++SP[2],B3
|
||||
NOP 4
|
||||
BNOP .S2 B3,5
|
||||
ENDPROC(sys_execve)
|
||||
|
||||
ENTRY(sys_pread_c6x)
|
||||
MV .D2X A8,B7
|
||||
#ifdef CONFIG_C6X_BIG_KERNEL
|
||||
|
|
|
@ -207,28 +207,6 @@ int copy_thread(unsigned long clone_flags, unsigned long usp,
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* c6x_execve() executes a new program.
|
||||
*/
|
||||
SYSCALL_DEFINE4(c6x_execve, const char __user *, name,
|
||||
const char __user *const __user *, argv,
|
||||
const char __user *const __user *, envp,
|
||||
struct pt_regs *, regs)
|
||||
{
|
||||
int error;
|
||||
char *filename;
|
||||
|
||||
filename = getname(name);
|
||||
error = PTR_ERR(filename);
|
||||
if (IS_ERR(filename))
|
||||
goto out;
|
||||
|
||||
error = do_execve(filename, argv, envp, regs);
|
||||
putname(filename);
|
||||
out:
|
||||
return error;
|
||||
}
|
||||
|
||||
unsigned long get_wchan(struct task_struct *p)
|
||||
{
|
||||
return p->thread.wchan;
|
||||
|
|
Loading…
Reference in a new issue