Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6ac8bac2 authored by Brian Gerst's avatar Brian Gerst Committed by H. Peter Anvin
Browse files

x86, fpu: Merge fpu_init()



Make fpu_init() handle 32-bit setup.

Signed-off-by: default avatarBrian Gerst <brgerst@gmail.com>
Acked-by: default avatarPekka Enberg <penberg@kernel.org>
Cc: Suresh Siddha <suresh.b.siddha@intel.com>
LKML-Reference: <1283563039-3466-3-git-send-email-brgerst@gmail.com>
Signed-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
parent 2df7a6e9
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
@@ -1264,13 +1264,6 @@ void __cpuinit cpu_init(void)
	clear_all_debug_regs();
	dbg_restore_debug_regs();

	/*
	 * Force FPU initialization:
	 */
	current_thread_info()->status = 0;
	clear_used_math();
	mxcsr_feature_mask_init();

	fpu_init();
	xsave_init();
}
+14 −16
Original line number Diff line number Diff line
@@ -85,7 +85,6 @@ static void __cpuinit init_thread_xstate(void)
#endif
}

#ifdef CONFIG_X86_64
/*
 * Called at bootup to set up the initial FPU state that is later cloned
 * into all processes.
@@ -93,12 +92,21 @@ static void __cpuinit init_thread_xstate(void)

void __cpuinit fpu_init(void)
{
	unsigned long oldcr0 = read_cr0();
	unsigned long cr0;
	unsigned long cr4_mask = 0;

	set_in_cr4(X86_CR4_OSFXSR);
	set_in_cr4(X86_CR4_OSXMMEXCPT);
	if (cpu_has_fxsr)
		cr4_mask |= X86_CR4_OSFXSR;
	if (cpu_has_xmm)
		cr4_mask |= X86_CR4_OSXMMEXCPT;
	if (cr4_mask)
		set_in_cr4(cr4_mask);

	write_cr0(oldcr0 & ~(X86_CR0_TS|X86_CR0_EM)); /* clear TS and EM */
	cr0 = read_cr0();
	cr0 &= ~(X86_CR0_TS|X86_CR0_EM); /* clear TS and EM */
	if (!HAVE_HWFP)
		cr0 |= X86_CR0_EM;
	write_cr0(cr0);

	if (!smp_processor_id())
		init_thread_xstate();
@@ -109,16 +117,6 @@ void __cpuinit fpu_init(void)
	clear_used_math();
}

#else	/* CONFIG_X86_64 */

void __cpuinit fpu_init(void)
{
	if (!smp_processor_id())
		init_thread_xstate();
}

#endif	/* CONFIG_X86_32 */

void fpu_finit(struct fpu *fpu)
{
#ifdef CONFIG_X86_32
+0 −12
Original line number Diff line number Diff line
@@ -881,18 +881,6 @@ void __init trap_init(void)
#endif

#ifdef CONFIG_X86_32
	if (cpu_has_fxsr) {
		printk(KERN_INFO "Enabling fast FPU save and restore... ");
		set_in_cr4(X86_CR4_OSFXSR);
		printk("done.\n");
	}
	if (cpu_has_xmm) {
		printk(KERN_INFO
			"Enabling unmasked SIMD FPU exception support... ");
		set_in_cr4(X86_CR4_OSXMMEXCPT);
		printk("done.\n");
	}

	set_system_trap_gate(SYSCALL_VECTOR, &system_call);
	set_bit(SYSCALL_VECTOR, used_vectors);
#endif