inline void do_fpu_context_switch()

in kernel/fpu.c [156:186]


inline void do_fpu_context_switch(struct pt_regs *regs)
{
	/* Enable to use FPU. */

	if (!user_mode(regs)) {
		pr_err("BUG: FPU is used in kernel mode.\n");
		BUG();
		return;
	}

	enable_ptreg_fpu(regs);
#ifdef CONFIG_LAZY_FPU	//Lazy FPU is used
	if (last_task_used_math == current)
		return;
	if (last_task_used_math != NULL)
		/* Other processes fpu state, save away */
		save_fpu(last_task_used_math);
	last_task_used_math = current;
#endif
	if (used_math()) {
		load_fpu(&current->thread.fpu);
	} else {
		/* First time FPU user.  */
		load_fpu(&init_fpuregs);
#if IS_ENABLED(CONFIG_SUPPORT_DENORMAL_ARITHMETIC)
		current->thread.fpu.UDF_IEX_trap = init_fpuregs.UDF_IEX_trap;
#endif
		set_used_math();
	}

}