unsigned long ip, flags, nat, um, cfm; 
unsigned long ip, flags, nat, um, cfm, rsc; 
restore_sigcontext (struct sigcontext __user *sc, struct sigscratch *scr){	unsigned long ip, flags, nat, um, cfm;	long err;	/* Always make any pending restarted system calls return -EINTR */	current_thread_info()->restart_block.fn = do_no_restart_syscall;	/* restore scratch that always needs gets updated during signal delivery: */	err  = __get_user(flags, &sc->sc_flags);	err |= __get_user(nat, &sc->sc_nat);	err |= __get_user(ip, &sc->sc_ip);			/* instruction pointer */	err |= __get_user(cfm, &sc->sc_cfm);	err |= __get_user(um, &sc->sc_um);			/* user mask */	err |= __get_user(scr->pt.ar_rsc, &sc->sc_ar_rsc);	err |= __get_user(scr->pt.ar_unat, &sc->sc_ar_unat);	err |= __get_user(scr->pt.ar_fpsr, &sc->sc_ar_fpsr);	err |= __get_user(scr->pt.ar_pfs, &sc->sc_ar_pfs);	err |= __get_user(scr->pt.pr, &sc->sc_pr);		/* predicates */	err |= __get_user(scr->pt.b0, &sc->sc_br[0]);		/* b0 (rp) */	err |= __get_user(scr->pt.b6, &sc->sc_br[6]);		/* b6 */	err |= __copy_from_user(&scr->pt.r1, &sc->sc_gr[1], 8);	/* r1 */	err |= __copy_from_user(&scr->pt.r8, &sc->sc_gr[8], 4*8);	/* r8-r11 */	err |= __copy_from_user(&scr->pt.r12, &sc->sc_gr[12], 2*8);	/* r12-r13 */	err |= __copy_from_user(&scr->pt.r15, &sc->sc_gr[15], 8);	/* r15 */	scr->pt.cr_ifs = cfm | (1UL << 63);	/* establish new instruction pointer: */	scr->pt.cr_iip = ip & ~0x3UL;	ia64_psr(&scr->pt)->ri = ip & 0x3;	scr->pt.cr_ipsr = (scr->pt.cr_ipsr & ~IA64_PSR_UM) | (um & IA64_PSR_UM);	scr->scratch_unat = ia64_put_scratch_nat_bits(&scr->pt, nat);	if (!(flags & IA64_SC_FLAG_IN_SYSCALL)) {		/* Restore most scratch-state only when not in syscall. */		err |= __get_user(scr->pt.ar_ccv, &sc->sc_ar_ccv);		/* ar.ccv */		err |= __get_user(scr->pt.b7, &sc->sc_br[7]);			/* b7 */		err |= __get_user(scr->pt.r14, &sc->sc_gr[14]);			/* r14 */		err |= __copy_from_user(&scr->pt.ar_csd, &sc->sc_ar25, 2*8); /* ar.csd & ar.ssd */		err |= __copy_from_user(&scr->pt.r2, &sc->sc_gr[2], 2*8);	/* r2-r3 */		err |= __copy_from_user(&scr->pt.r16, &sc->sc_gr[16], 16*8);	/* r16-r31 */	}	if ((flags & IA64_SC_FLAG_FPH_VALID) != 0) {		struct ia64_psr *psr = ia64_psr(&scr->pt);		__copy_from_user(current->thread.fph, &sc->sc_fr[32], 96*16);		psr->mfh = 0;	/* drop signal handler's fph contents... */		if (psr->dfh)			ia64_drop_fpu(current);		else {			/* We already own the local fph, otherwise psr->dfh wouldn't be 0.  */			__ia64_load_fpu(current->thread.fph);			ia64_set_local_fpu_owner(current);		}	}	return err;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/4ea78729b8dbfc400fe165a57b90a394a7275a54/signal.c/buggy/arch/ia64/kernel/signal.c