Commit f7200d4c authored by Al Viro's avatar Al Viro

sparc32: switch to generic sys_execve()

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent ab348681
...@@ -8,8 +8,4 @@ extern asmlinkage long sparc_do_fork(unsigned long clone_flags, ...@@ -8,8 +8,4 @@ extern asmlinkage long sparc_do_fork(unsigned long clone_flags,
struct pt_regs *regs, struct pt_regs *regs,
unsigned long stack_size); unsigned long stack_size);
#ifndef __arch64__
extern asmlinkage int sparc_execve(struct pt_regs *regs);
#endif
#endif /* _SPARC64_SYSCALLS_H */ #endif /* _SPARC64_SYSCALLS_H */
...@@ -45,8 +45,8 @@ ...@@ -45,8 +45,8 @@
#define __ARCH_WANT_COMPAT_SYS_TIME #define __ARCH_WANT_COMPAT_SYS_TIME
#define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND #define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND
#define __ARCH_WANT_COMPAT_SYS_SENDFILE #define __ARCH_WANT_COMPAT_SYS_SENDFILE
#define __ARCH_WANT_SYS_EXECVE
#endif #endif
#define __ARCH_WANT_SYS_EXECVE
/* /*
* "Conditional" syscalls * "Conditional" syscalls
......
...@@ -806,23 +806,10 @@ sys_nis_syscall: ...@@ -806,23 +806,10 @@ sys_nis_syscall:
call c_sys_nis_syscall call c_sys_nis_syscall
mov %l5, %o7 mov %l5, %o7
.align 4
.globl sys_execve
sys_execve:
mov %o7, %l5
add %sp, STACKFRAME_SZ, %o0 ! pt_regs *regs arg
call sparc_execve
mov %l5, %o7
.globl sunos_execv
sunos_execv: sunos_execv:
st %g0, [%sp + STACKFRAME_SZ + PT_I2] .globl sunos_execv
b sys_execve
call sparc_execve clr %i2
add %sp, STACKFRAME_SZ, %o0
b ret_sys_call
ld [%sp + STACKFRAME_SZ + PT_I0], %o0
.align 4 .align 4
.globl sys_sparc_pipe .globl sys_sparc_pipe
......
...@@ -476,34 +476,6 @@ int dump_fpu (struct pt_regs * regs, elf_fpregset_t * fpregs) ...@@ -476,34 +476,6 @@ int dump_fpu (struct pt_regs * regs, elf_fpregset_t * fpregs)
return 1; return 1;
} }
/*
* sparc_execve() executes a new program after the asm stub has set
* things up for us. This should basically do what I want it to.
*/
asmlinkage int sparc_execve(struct pt_regs *regs)
{
int error, base = 0;
struct filename *filename;
/* Check for indirect call. */
if(regs->u_regs[UREG_G1] == 0)
base = 1;
filename = getname((char __user *)regs->u_regs[base + UREG_I0]);
error = PTR_ERR(filename);
if(IS_ERR(filename))
goto out;
error = do_execve(filename->name,
(const char __user *const __user *)
regs->u_regs[base + UREG_I1],
(const char __user *const __user *)
regs->u_regs[base + UREG_I2],
regs);
putname(filename);
out:
return error;
}
unsigned long get_wchan(struct task_struct *task) unsigned long get_wchan(struct task_struct *task)
{ {
unsigned long pc, fp, bias = 0; unsigned long pc, fp, bias = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment