Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 680a1453 authored by Mark Salter's avatar Mark Salter Committed by Al Viro
Browse files

c6x: switch to generic sys_execve

parent 39fcf440
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -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>

+1 −0
Original line number Diff line number Diff line
@@ -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>
+0 −23
Original line number Diff line number Diff line
@@ -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
+0 −22
Original line number Diff line number Diff line
@@ -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;