|| __put_user((struct pt_regs *)frame, &sc->regs) 
|| __put_user((struct pt_regs __user *)frame, &sc->regs) 
handle_signal(unsigned long sig, struct k_sigaction *ka,	      siginfo_t *info, sigset_t *oldset, struct pt_regs * regs,	      unsigned long newsp){	struct sigcontext __user *sc;	struct sigregs __user *frame;	unsigned long origsp = newsp;	/* Set up Signal Frame */	newsp -= sizeof(struct sigregs);	frame = (struct sigregs __user *) newsp;	/* Put a sigcontext on the stack */	newsp -= sizeof(*sc);	sc = (struct sigcontext __user *) newsp;	/* create a stack frame for the caller of the handler */	newsp -= __SIGNAL_FRAMESIZE;	if (!access_ok(VERIFY_WRITE, (void __user *) newsp, origsp - newsp))		goto badframe;#if _NSIG != 64#error "Please adjust handle_signal()"#endif	if (__put_user((unsigned long) ka->sa.sa_handler, &sc->handler)	    || __put_user(oldset->sig[0], &sc->oldmask)	    || __put_user(oldset->sig[1], &sc->_unused[3])	    || __put_user((struct pt_regs *)frame, &sc->regs)	    || __put_user(sig, &sc->signal))		goto badframe;	if (save_user_regs(regs, &frame->mctx, __NR_sigreturn))		goto badframe;	if (put_user(regs->gpr[1], (unsigned long __user *)newsp))		goto badframe;	regs->gpr[1] = newsp;	regs->gpr[3] = sig;	regs->gpr[4] = (unsigned long) sc;	regs->nip = (unsigned long) ka->sa.sa_handler;	regs->link = (unsigned long) frame->mctx.tramp;	regs->trap = 0;	return;badframe:#ifdef DEBUG_SIG	printk("badframe in handle_signal, regs=%p frame=%p newsp=%lx\n",	       regs, frame, newsp);#endif	force_sigsegv(sig, current);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/9090e001f28de4bccae232f1b78e78fad5132ecb/signal.c/clean/arch/ppc/kernel/signal.c