mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	alpha: switch osf_sigprocmask() to use of sigprocmask()
get rid of a useless wrapper, while we are at it Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									32163f4b2c
								
							
						
					
					
						commit
						c52c2ddc1d
					
				
					 3 changed files with 11 additions and 46 deletions
				
			
		| 
						 | 
					@ -914,15 +914,6 @@ sys_execve:
 | 
				
			||||||
	jmp	$31, do_sys_execve
 | 
						jmp	$31, do_sys_execve
 | 
				
			||||||
.end 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
 | 
						.align	4
 | 
				
			||||||
	.globl	alpha_ni_syscall
 | 
						.globl	alpha_ni_syscall
 | 
				
			||||||
	.ent	alpha_ni_syscall
 | 
						.ent	alpha_ni_syscall
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -41,46 +41,20 @@ static void do_signal(struct pt_regs *, struct switch_stack *,
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * The OSF/1 sigprocmask calling sequence is different from the
 | 
					 * The OSF/1 sigprocmask calling sequence is different from the
 | 
				
			||||||
 * C sigprocmask() sequence..
 | 
					 * 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,
 | 
					SYSCALL_DEFINE2(osf_sigprocmask, int, how, unsigned long, newmask)
 | 
				
			||||||
		struct pt_regs *, regs)
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	unsigned long oldmask = -EINVAL;
 | 
						sigset_t oldmask;
 | 
				
			||||||
 | 
						sigset_t mask;
 | 
				
			||||||
 | 
						unsigned long res;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((unsigned long)how-1 <= 2) {
 | 
						siginitset(&mask, newmask & ~_BLOCKABLE);
 | 
				
			||||||
		long sign = how-2;		/* -1 .. 1 */
 | 
						res = siprocmask(how, &mask, &oldmask);
 | 
				
			||||||
		unsigned long block, unblock;
 | 
						if (!res) {
 | 
				
			||||||
 | 
							force_successful_syscall_return();
 | 
				
			||||||
		newmask &= _BLOCKABLE;
 | 
							res = oldmask->sig[0];
 | 
				
			||||||
		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);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		regs->r0 = 0;		/* special no error return */
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return oldmask;
 | 
						return res;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SYSCALL_DEFINE3(osf_sigaction, int, sig,
 | 
					SYSCALL_DEFINE3(osf_sigaction, int, sig,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -58,7 +58,7 @@ sys_call_table:
 | 
				
			||||||
	.quad sys_open				/* 45 */
 | 
						.quad sys_open				/* 45 */
 | 
				
			||||||
	.quad alpha_ni_syscall
 | 
						.quad alpha_ni_syscall
 | 
				
			||||||
	.quad sys_getxgid
 | 
						.quad sys_getxgid
 | 
				
			||||||
	.quad osf_sigprocmask
 | 
						.quad sys_osf_sigprocmask
 | 
				
			||||||
	.quad alpha_ni_syscall
 | 
						.quad alpha_ni_syscall
 | 
				
			||||||
	.quad alpha_ni_syscall			/* 50 */
 | 
						.quad alpha_ni_syscall			/* 50 */
 | 
				
			||||||
	.quad sys_acct
 | 
						.quad sys_acct
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue