Commit 1703a219 authored by Al Viro's avatar Al Viro
Browse files

cris: switch to generic kernel_execve/sys_execve



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 69b58a67
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ config CRIS
	select GENERIC_CMOS_UPDATE
	select MODULES_USE_ELF_RELA
	select GENERIC_KERNEL_THREAD
	select GENERIC_KERNEL_EXECVE

config HZ
	int
+2 −9
Original line number Diff line number Diff line
@@ -87,8 +87,8 @@ ret_from_kernel_thread:
	jsr schedule_tail
	move.d	$r2, $r10	; argument is here
	jsr	$r1		; call the payload
	moveq	0, $r10
	jsr	sys_exit	; never returns
	moveq	0, $r9		; no syscall restarts, TYVM...
	ba  ret_from_sys_call

ret_from_intr:
	;; check for resched if preemptive kernel or if we're going back to user-mode 
@@ -594,13 +594,6 @@ _ugdb_handle_breakpoint:
	ba	do_sigtrap		; SIGTRAP the offending process. 
	pop	$dccr			; Restore dccr in delay slot.

	.global kernel_execve
kernel_execve:
	move.d __NR_execve, $r9
	break 13
	ret
	nop

	.data

hw_bp_trigs:
+0 −23
Original line number Diff line number Diff line
@@ -167,29 +167,6 @@ asmlinkage int sys_vfork(void)
        return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, rdusp(), current_pt_regs(), 0, NULL, NULL);
}

/*
 * sys_execve() executes a new program.
 */
asmlinkage int sys_execve(const char *fname,
			  const char *const *argv,
			  const char *const *envp,
			  long r13, long mof, long srp, 
			  struct pt_regs *regs)
{
	int error;
	struct filename *filename;

	filename = getname(fname);
	error = PTR_ERR(filename);

	if (IS_ERR(filename))
	        goto out;
	error = do_execve(filename->name, argv, envp, regs);
	putname(filename);
 out:
	return error;
}

unsigned long get_wchan(struct task_struct *p)
{
#if 0
+2 −11
Original line number Diff line number Diff line
@@ -92,8 +92,8 @@ ret_from_kernel_thread:
	move.d	$r2, $r10
	jsr	$r1
	nop
	moveq	0, $r10
	jsr	sys_exit
	moveq	0, $r9			; no syscall restarts, TYVM...
	ba  ret_from_sys_call
	nop
	.size	ret_from_kernel_thread, . - ret_from_kernel_thread

@@ -544,15 +544,6 @@ _ugdb_handle_exception:
	ba	do_sigtrap		; SIGTRAP the offending process.
	move.d	[$sp+], $r0		; Restore R0 in delay slot.

	.global kernel_execve
	.type	kernel_execve,@function
kernel_execve:
	move.d __NR_execve, $r9
	break 13
	ret
	nop
	.size	kernel_execve, . - kernel_execve

	.data

	.section .rodata,"a"
+0 −22
Original line number Diff line number Diff line
@@ -186,28 +186,6 @@ sys_vfork(void)
	return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, rdusp(), current_pt_regs(), 0, NULL, NULL);
}

/* sys_execve() executes a new program. */
asmlinkage int
sys_execve(const char *fname,
	   const char *const *argv,
	   const char *const *envp, long r13, long mof, long srp,
	   struct pt_regs *regs)
{
	int error;
	struct filename *filename;

	filename = getname(fname);
	error = PTR_ERR(filename);

	if (IS_ERR(filename))
	        goto out;

	error = do_execve(filename->name, argv, envp, regs);
	putname(filename);
 out:
	return error;
}

unsigned long
get_wchan(struct task_struct *p)
{
Loading