__asm__("movl %0,%%db7"	: : "r" (current->thread.debugreg[7])); 
loaddebug(&current->thread, 7); 
int fastcall do_signal(struct pt_regs *regs, sigset_t *oldset){	siginfo_t info;	int signr;	struct k_sigaction ka;	/*	 * We want the common case to go fast, which	 * is why we may in certain cases get here from	 * kernel mode. Just return without doing anything	 * if so.	 */	if ((regs->xcs & 3) != 3)		return 1;	if (current->flags & PF_FREEZE) {		refrigerator(0);		goto no_signal;	}	if (!oldset)		oldset = &current->blocked;	signr = get_signal_to_deliver(&info, &ka, regs, NULL);	if (signr > 0) {		/* Reenable any watchpoints before delivering the		 * signal to user space. The processor register will		 * have been cleared if the watchpoint triggered		 * inside the kernel.		 */		if (unlikely(current->thread.debugreg[7])) {			__asm__("movl %0,%%db7"	: : "r" (current->thread.debugreg[7]));		}		/* Whee!  Actually deliver the signal.  */		handle_signal(signr, &info, &ka, oldset, regs);		return 1;	} no_signal:	/* Did we come from a system call? */	if (regs->orig_eax >= 0) {		/* Restart the system call - no handlers present */		if (regs->eax == -ERESTARTNOHAND ||		    regs->eax == -ERESTARTSYS ||		    regs->eax == -ERESTARTNOINTR) {			regs->eax = regs->orig_eax;			regs->eip -= 2;		}		if (regs->eax == -ERESTART_RESTARTBLOCK){			regs->eax = __NR_restart_syscall;			regs->eip -= 2;		}	}	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/ecd02dddd1d5bfc2141cbd0e205a53fb9d849c9e/signal.c/clean/arch/i386/kernel/signal.c