Commit 76d41460 authored by Richard Henderson's avatar Richard Henderson

[ALPHA] Pass pt_regs as pointer to execve and sigprocmask syscalls.

parent 9fdca734
......@@ -924,6 +924,24 @@ sys_ptrace:
jmp $31, do_sys_ptrace
.end sys_ptrace
.align 4
.globl sys_execve
.ent sys_execve
sys_execve:
.prologue 0
mov $sp, $19
jmp $31, do_sys_execve
.end sys_execve
.align 4
.globl osf_sigprocmask
.ent osf_sigprocmask
osf_sigprocmask:
.prologue 0
mov $sp, $18
jmp $31, do_osf_sigprocmask
.end osf_sigprocmask
.align 4
.globl alpha_ni_syscall
.ent alpha_ni_syscall
......
......@@ -456,19 +456,10 @@ dump_elf_task_fp(elf_fpreg_t *dest, struct task_struct *task)
/*
* sys_execve() executes a new program.
*
* This works due to the alpha calling sequence: the first 6 args
* are gotten from registers, while the rest is on the stack, so
* we get a0-a5 for free, and then magically find "struct pt_regs"
* on the stack for us..
*
* Don't do this at home.
*/
asmlinkage int
sys_execve(char __user *ufilename, char __user * __user *argv,
char __user * __user *envp,
unsigned long a3, unsigned long a4, unsigned long a5,
struct pt_regs regs)
do_sys_execve(char __user *ufilename, char __user * __user *argv,
char __user * __user *envp, struct pt_regs *regs)
{
int error;
char *filename;
......@@ -477,7 +468,7 @@ sys_execve(char __user *ufilename, char __user * __user *argv,
error = PTR_ERR(filename);
if (IS_ERR(filename))
goto out;
error = do_execve(filename, argv, envp, &regs);
error = do_execve(filename, argv, envp, regs);
putname(filename);
out:
return error;
......
......@@ -53,8 +53,7 @@ static int do_signal(sigset_t *, struct pt_regs *, struct switch_stack *,
* operation, as all of this is local to this thread.
*/
asmlinkage unsigned long
osf_sigprocmask(int how, unsigned long newmask, long a2, long a3,
long a4, long a5, struct pt_regs regs)
do_osf_sigprocmask(int how, unsigned long newmask, struct pt_regs *regs)
{
unsigned long oldmask = -EINVAL;
......@@ -78,7 +77,7 @@ osf_sigprocmask(int how, unsigned long newmask, long a2, long a3,
recalc_sigpending();
spin_unlock_irq(&current->sighand->siglock);
(&regs)->r0 = 0; /* special no error return */
regs->r0 = 0; /* special no error return */
}
return oldmask;
}
......
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