 /* * Reenable the DABR before delivering the signal to * user space. The DABR will have been cleared if it * triggered inside the kernel. */ if (current->thread.dabr) set_dabr(current->thread.dabr);  
int do_signal(sigset_t *oldset, struct pt_regs *regs){	siginfo_t info;	int signr;	struct k_sigaction ka;	/*	 * If the current thread is 32 bit - invoke the	 * 32 bit signal handling code	 */	if (test_thread_flag(TIF_32BIT))		return do_signal32(oldset, regs);	if (!oldset)		oldset = &current->blocked;	signr = get_signal_to_deliver(&info, &ka, regs, NULL);	if (signr > 0) {		/* Whee!  Actually deliver the signal.  */		if (TRAP(regs) == 0x0C00)			syscall_restart(regs, &ka);		return handle_signal(signr, &ka, &info, oldset, regs);	}	if (TRAP(regs) == 0x0C00) {	/* System Call! */		if ((int)regs->result == -ERESTARTNOHAND ||		    (int)regs->result == -ERESTARTSYS ||		    (int)regs->result == -ERESTARTNOINTR) {			regs->gpr[3] = regs->orig_gpr3;			regs->nip -= 4; /* Back up & retry system call */			regs->result = 0;		} else if ((int)regs->result == -ERESTART_RESTARTBLOCK) {			regs->gpr[0] = __NR_restart_syscall;			regs->nip -= 4;			regs->result = 0;		}	}	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/fd9648dff6f9797ecc509bcd181706a274dc074d/signal.c/clean/arch/ppc64/kernel/signal.c