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

Commit c52c2ddc authored by Al Viro's avatar Al Viro Committed by Linus Torvalds
Browse files

alpha: switch osf_sigprocmask() to use of sigprocmask()



get rid of a useless wrapper, while we are at it

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 32163f4b
Loading
Loading
Loading
Loading
+0 −9
Original line number Diff line number Diff line
@@ -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
+11 −37
Original line number Diff line number Diff line
@@ -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(&current->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(&current->blocked);
		current->blocked.sig[0] = newmask;
		recalc_sigpending();
		spin_unlock_irq(&current->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,
+1 −1
Original line number Diff line number Diff line
@@ -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