#endif  
struct task_struct *__switch_to(struct task_struct *prev,				struct task_struct *new){	struct thread_struct *new_thread, *old_thread;	unsigned long flags;	struct task_struct *last;#ifdef CONFIG_SMP	/* avoid complexity of lazy save/restore of fpu	 * by just saving it every time we switch out if	 * this task used the fpu during the last quantum.	 * 	 * If it tries to use the fpu again, it'll trap and	 * reload its fp regs.  So we don't have to do a restore	 * every switch, just a save.	 *  -- Cort	 */	if (prev->thread.regs && (prev->thread.regs->msr & MSR_FP))		giveup_fpu(prev);#ifdef CONFIG_ALTIVEC	if (prev->thread.regs && (prev->thread.regs->msr & MSR_VEC))		giveup_altivec(prev);#endif /* CONFIG_ALTIVEC */#endif /* CONFIG_SMP */#if defined(CONFIG_ALTIVEC) && !defined(CONFIG_SMP)	/* Avoid the trap.  On smp this this never happens since	 * we don't set last_task_used_altivec -- Cort	 */	if (new->thread.regs && last_task_used_altivec == new)		new->thread.regs->msr |= MSR_VEC;#endif /* CONFIG_ALTIVEC */	flush_tlb_pending();	new_thread = &new->thread;	old_thread = &current->thread;/* Collect purr utilization data per process and per processor wise *//* purr is nothing but processor time base                          */#if defined(CONFIG_PPC_PSERIES)	if (firmware_has_feature(FW_FEATURE_SPLPAR)) {		struct cpu_usage *cu = &__get_cpu_var(cpu_usage_array);		long unsigned start_tb, current_tb;		start_tb = old_thread->start_tb;		cu->current_tb = current_tb = mfspr(SPRN_PURR);		old_thread->accum_tb += (current_tb - start_tb);		new_thread->start_tb = current_tb;	}#endif	local_irq_save(flags);	last = _switch(old_thread, new_thread);	local_irq_restore(flags);	return last;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/8d15a3e55f49678b0900dcf5c1cddb322a129325/process.c/clean/arch/ppc64/kernel/process.c