recalc_sigpending(); spin_unlock_irq(&current->sighand->siglock); } 
recalc_sigpending(); spin_unlock_irq(&current->sighand->siglock); 
handle_signal(unsigned long sig, struct k_sigaction *ka, siginfo_t *info,	      sigset_t *oldset, struct pt_regs *regs){	/* Are we from a system call? */	if (regs->tra >= 0) {		/* If so, check system call restarting.. */		switch (regs->regs[0]) {			case -ERESTARTNOHAND:				regs->regs[0] = -EINTR;				break;			case -ERESTARTSYS:				if (!(ka->sa.sa_flags & SA_RESTART)) {					regs->regs[0] = -EINTR;					break;				}			/* fallthrough */			case -ERESTARTNOINTR:				regs->pc -= 2;		}	} else {		/* gUSA handling */#ifdef CONFIG_PREEMPT		unsigned long flags;		local_irq_save(flags);#endif		if (regs->regs[15] >= 0xc0000000) {			int offset = (int)regs->regs[15];			/* Reset stack pointer: clear critical region mark */			regs->regs[15] = regs->regs[1];			if (regs->pc < regs->regs[0])				/* Go to rewind point #1 */				regs->pc = regs->regs[0] + offset - 2;		}#ifdef CONFIG_PREEMPT		local_irq_restore(flags);#endif	}	/* Set up the stack frame */	if (ka->sa.sa_flags & SA_SIGINFO)		setup_rt_frame(sig, ka, info, oldset, regs);	else		setup_frame(sig, ka, oldset, regs);	if (ka->sa.sa_flags & SA_ONESHOT)		ka->sa.sa_handler = SIG_DFL;	if (!(ka->sa.sa_flags & SA_NODEFER)) {		spin_lock_irq(&current->sighand->siglock);		sigorsets(&current->blocked,&current->blocked,&ka->sa.sa_mask);		sigaddset(&current->blocked,sig);		recalc_sigpending();		spin_unlock_irq(&current->sighand->siglock);	}}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/69be8f189653cd81aae5a74e26615b12871bb72e/signal.c/buggy/arch/sh/kernel/signal.c