 /* Make sure signal doesn't get spurrious FP exceptions */ current->thread.fpscr.val = 0; 
static long setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs,		 int signr, sigset_t *set, unsigned long handler){	/* When CONFIG_ALTIVEC is set, we _always_ setup v_regs even if the	 * process never used altivec yet (MSR_VEC is zero in pt_regs of	 * the context). This is very important because we must ensure we	 * don't lose the VRSAVE content that may have been set prior to	 * the process doing its first vector operation	 * Userland shall check AT_HWCAP to know wether it can rely on the	 * v_regs pointer or not	 */#ifdef CONFIG_ALTIVEC	elf_vrreg_t __user *v_regs = (elf_vrreg_t __user *)(((unsigned long)sc->vmx_reserve + 15) & ~0xful);#endif	long err = 0;	flush_fp_to_thread(current);	/* Make sure signal doesn't get spurrious FP exceptions */	current->thread.fpscr.val = 0;#ifdef CONFIG_ALTIVEC	err |= __put_user(v_regs, &sc->v_regs);	/* save altivec registers */	if (current->thread.used_vr) {		flush_altivec_to_thread(current);		/* Copy 33 vec registers (vr0..31 and vscr) to the stack */		err |= __copy_to_user(v_regs, current->thread.vr, 33 * sizeof(vector128));		/* set MSR_VEC in the MSR value in the frame to indicate that sc->v_reg)		 * contains valid data.		 */		regs->msr |= MSR_VEC;	}	/* We always copy to/from vrsave, it's 0 if we don't have or don't	 * use altivec.	 */	err |= __put_user(current->thread.vrsave, (u32 __user *)&v_regs[33]);#else /* CONFIG_ALTIVEC */	err |= __put_user(0, &sc->v_regs);#endif /* CONFIG_ALTIVEC */	err |= __put_user(&sc->gp_regs, &sc->regs);	err |= __copy_to_user(&sc->gp_regs, regs, GP_REGS_SIZE);	err |= __copy_to_user(&sc->fp_regs, &current->thread.fpr, FP_REGS_SIZE);	err |= __put_user(signr, &sc->signal);	err |= __put_user(handler, &sc->handler);	if (set != NULL)		err |=  __put_user(set->sig[0], &sc->oldmask);	return err;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/cc657f53928997c65bf2409c45166c6ceee8d306/signal_64.c/buggy/arch/powerpc/kernel/signal_64.c