Loading arch/alpha/kernel/entry.S +0 −9 Original line number Diff line number Diff line Loading @@ -914,15 +914,6 @@ sys_execve: 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, sys_osf_sigprocmask .end osf_sigprocmask .align 4 .globl alpha_ni_syscall .ent alpha_ni_syscall Loading arch/alpha/kernel/signal.c +11 −37 Original line number Diff line number Diff line Loading @@ -41,46 +41,20 @@ static void do_signal(struct pt_regs *, struct switch_stack *, /* * The OSF/1 sigprocmask calling sequence is different from the * C sigprocmask() sequence.. * * how: * 1 - SIG_BLOCK * 2 - SIG_UNBLOCK * 3 - SIG_SETMASK * * We change the range to -1 .. 1 in order to let gcc easily * use the conditional move instructions. * * Note that we don't need to acquire the kernel lock for SMP * operation, as all of this is local to this thread. */ SYSCALL_DEFINE3(osf_sigprocmask, int, how, unsigned long, newmask, struct pt_regs *, regs) SYSCALL_DEFINE2(osf_sigprocmask, int, how, unsigned long, newmask) { unsigned long oldmask = -EINVAL; if ((unsigned long)how-1 <= 2) { long sign = how-2; /* -1 .. 1 */ unsigned long block, unblock; newmask &= _BLOCKABLE; spin_lock_irq(¤t->sighand->siglock); oldmask = current->blocked.sig[0]; unblock = oldmask & ~newmask; block = oldmask | newmask; if (!sign) block = unblock; if (sign <= 0) newmask = block; if (_NSIG_WORDS > 1 && sign > 0) sigemptyset(¤t->blocked); current->blocked.sig[0] = newmask; recalc_sigpending(); spin_unlock_irq(¤t->sighand->siglock); sigset_t oldmask; sigset_t mask; unsigned long res; regs->r0 = 0; /* special no error return */ siginitset(&mask, newmask & ~_BLOCKABLE); res = siprocmask(how, &mask, &oldmask); if (!res) { force_successful_syscall_return(); res = oldmask->sig[0]; } return oldmask; return res; } SYSCALL_DEFINE3(osf_sigaction, int, sig, Loading arch/alpha/kernel/systbls.S +1 −1 Original line number Diff line number Diff line Loading @@ -58,7 +58,7 @@ sys_call_table: .quad sys_open /* 45 */ .quad alpha_ni_syscall .quad sys_getxgid .quad osf_sigprocmask .quad sys_osf_sigprocmask .quad alpha_ni_syscall .quad alpha_ni_syscall /* 50 */ .quad sys_acct Loading Loading
arch/alpha/kernel/entry.S +0 −9 Original line number Diff line number Diff line Loading @@ -914,15 +914,6 @@ sys_execve: 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, sys_osf_sigprocmask .end osf_sigprocmask .align 4 .globl alpha_ni_syscall .ent alpha_ni_syscall Loading
arch/alpha/kernel/signal.c +11 −37 Original line number Diff line number Diff line Loading @@ -41,46 +41,20 @@ static void do_signal(struct pt_regs *, struct switch_stack *, /* * The OSF/1 sigprocmask calling sequence is different from the * C sigprocmask() sequence.. * * how: * 1 - SIG_BLOCK * 2 - SIG_UNBLOCK * 3 - SIG_SETMASK * * We change the range to -1 .. 1 in order to let gcc easily * use the conditional move instructions. * * Note that we don't need to acquire the kernel lock for SMP * operation, as all of this is local to this thread. */ SYSCALL_DEFINE3(osf_sigprocmask, int, how, unsigned long, newmask, struct pt_regs *, regs) SYSCALL_DEFINE2(osf_sigprocmask, int, how, unsigned long, newmask) { unsigned long oldmask = -EINVAL; if ((unsigned long)how-1 <= 2) { long sign = how-2; /* -1 .. 1 */ unsigned long block, unblock; newmask &= _BLOCKABLE; spin_lock_irq(¤t->sighand->siglock); oldmask = current->blocked.sig[0]; unblock = oldmask & ~newmask; block = oldmask | newmask; if (!sign) block = unblock; if (sign <= 0) newmask = block; if (_NSIG_WORDS > 1 && sign > 0) sigemptyset(¤t->blocked); current->blocked.sig[0] = newmask; recalc_sigpending(); spin_unlock_irq(¤t->sighand->siglock); sigset_t oldmask; sigset_t mask; unsigned long res; regs->r0 = 0; /* special no error return */ siginitset(&mask, newmask & ~_BLOCKABLE); res = siprocmask(how, &mask, &oldmask); if (!res) { force_successful_syscall_return(); res = oldmask->sig[0]; } return oldmask; return res; } SYSCALL_DEFINE3(osf_sigaction, int, sig, Loading
arch/alpha/kernel/systbls.S +1 −1 Original line number Diff line number Diff line Loading @@ -58,7 +58,7 @@ sys_call_table: .quad sys_open /* 45 */ .quad alpha_ni_syscall .quad sys_getxgid .quad osf_sigprocmask .quad sys_osf_sigprocmask .quad alpha_ni_syscall .quad alpha_ni_syscall /* 50 */ .quad sys_acct Loading