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
|
@ -44,11 +44,6 @@ extern int sys_cache_sync(unsigned long s, unsigned long e);
|
||||||
struct pt_regs;
|
struct pt_regs;
|
||||||
|
|
||||||
extern asmlinkage long sys_c6x_clone(struct pt_regs *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>
|
#include <asm-generic/syscalls.h>
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#define _ASM_C6X_UNISTD_H
|
#define _ASM_C6X_UNISTD_H
|
||||||
|
|
||||||
#define __ARCH_WANT_KERNEL_EXECVE
|
#define __ARCH_WANT_KERNEL_EXECVE
|
||||||
|
#define __ARCH_WANT_SYS_EXECVE
|
||||||
|
|
||||||
/* Use the standard ABI for syscalls. */
|
/* Use the standard ABI for syscalls. */
|
||||||
#include <asm-generic/unistd.h>
|
#include <asm-generic/unistd.h>
|
||||||
|
|
|
@ -647,29 +647,6 @@ ENTRY(sys_rt_sigreturn)
|
||||||
#endif
|
#endif
|
||||||
ENDPROC(sys_rt_sigreturn)
|
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)
|
ENTRY(sys_pread_c6x)
|
||||||
MV .D2X A8,B7
|
MV .D2X A8,B7
|
||||||
#ifdef CONFIG_C6X_BIG_KERNEL
|
#ifdef CONFIG_C6X_BIG_KERNEL
|
||||||
|
|
|
@ -207,28 +207,6 @@ int copy_thread(unsigned long clone_flags, unsigned long usp,
|
||||||
return 0;
|
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)
|
unsigned long get_wchan(struct task_struct *p)
|
||||||
{
|
{
|
||||||
return p->thread.wchan;
|
return p->thread.wchan;
|
||||||
|
|
Loading…
Reference in New Issue