--- 2.6.6-rc3/arch/i386/kernel/Makefile.orig 2004-05-06 17:57:10.000000000 -0700 +++ 2.6.6-rc3/arch/i386/kernel/Makefile 2004-05-06 18:06:30.000000000 -0700 @@ -6,8 +6,8 @@ obj-y := process.o semaphore.o signal.o entry.o traps.o irq.o vm86.o \ ptrace.o i8259.o ioport.o ldt.o setup.o time.o sys_i386.o \ - pci-dma.o i386_ksyms.o i387.o dmi_scan.o bootflag.o \ - doublefault.o + pci-dma.o i386_ksyms.o i387.o i387_shared.o dmi_scan.o \ + bootflag.o doublefault.o obj-y += cpu/ obj-y += timers/ --- /dev/null 2003-09-23 15:19:32.000000000 -0700 +++ 2.6.6-rc3/arch/i386/kernel/i387_shared.c 2004-05-06 18:12:09.000000000 -0700 @@ -0,0 +1,29 @@ +/* + * linux/arch/i386/kernel/i387_shared.c + * + * Taking the archicture shared mxcsr functionality out from i387.c + * to this i387_shared.c.(6th May 2004) + * Nitin Kamble + */ + +#include +#include +#include +#include +#include + +u32 mxcsr_feature_mask = 0xffffffff; + +void mxcsr_feature_mask_init(void) +{ + u32 mask = 0; + clts(); + if (cpu_has_fxsr) { + memset(¤t->thread.i387.fxsave, 0, sizeof(struct i387_fxsave_struct)); + asm volatile("fxsave %0" : : "m" (current->thread.i387.fxsave)); + mask = current->thread.i387.fxsave.mxcsr_mask; + if (mask == 0) mask = 0x0000ffbf; + } + mxcsr_feature_mask &= mask; + stts(); +} --- 2.6.6-rc3/arch/i386/kernel/i387.c.orig 2004-05-06 17:57:16.000000000 -0700 +++ 2.6.6-rc3/arch/i386/kernel/i387.c 2004-05-06 18:06:30.000000000 -0700 @@ -24,22 +24,6 @@ #define HAVE_HWFP 1 #endif -unsigned long mxcsr_feature_mask = 0xffffffff; - -void mxcsr_feature_mask_init(void) -{ - unsigned long mask = 0; - clts(); - if (cpu_has_fxsr) { - memset(¤t->thread.i387.fxsave, 0, sizeof(struct i387_fxsave_struct)); - asm volatile("fxsave %0" : : "m" (current->thread.i387.fxsave)); - mask = current->thread.i387.fxsave.mxcsr_mask; - if (mask == 0) mask = 0x0000ffbf; - } - mxcsr_feature_mask &= mask; - stts(); -} - /* * The _current_ task is using the FPU for the first time * so initialize it and set the mxcsr to its default --- 2.6.6-rc3/arch/x86_64/kernel/Makefile.orig 2004-05-06 17:57:18.000000000 -0700 +++ 2.6.6-rc3/arch/x86_64/kernel/Makefile 2004-05-06 18:06:30.000000000 -0700 @@ -6,7 +6,7 @@ EXTRA_AFLAGS := -traditional obj-y := process.o semaphore.o signal.o entry.o traps.o irq.o \ ptrace.o i8259.o ioport.o ldt.o setup.o time.o sys_x86_64.o \ - x8664_ksyms.o i387.o syscall.o vsyscall.o \ + x8664_ksyms.o i387.o i387_shared.o syscall.o vsyscall.o \ setup64.o bootflag.o e820.o reboot.o warmreboot.o obj-y += mce.o acpi/ @@ -35,3 +35,4 @@ topology-y += ../../i386/mach-default/topology.o swiotlb-$(CONFIG_SWIOTLB) += ../../ia64/lib/swiotlb.o microcode-$(subst m,y,$(CONFIG_MICROCODE)) += ../../i386/kernel/microcode.o +i387_shared-y += ../../i386/kernel/i387_shared.o --- 2.6.6-rc3/arch/x86_64/kernel/i387.c.orig 2004-05-06 17:57:19.000000000 -0700 +++ 2.6.6-rc3/arch/x86_64/kernel/i387.c 2004-05-06 18:06:30.000000000 -0700 @@ -24,20 +24,6 @@ #include #include -unsigned int mxcsr_feature_mask = 0xffffffff; - -void mxcsr_feature_mask_init(void) -{ - unsigned int mask; - clts(); - memset(¤t->thread.i387.fxsave, 0, sizeof(struct i387_fxsave_struct)); - asm volatile("fxsave %0" : : "m" (current->thread.i387.fxsave)); - mask = current->thread.i387.fxsave.mxcsr_mask; - if (mask == 0) mask = 0x0000ffbf; - mxcsr_feature_mask &= mask; - stts(); -} - /* * Called at bootup to set up the initial FPU state that is later cloned * into all processes.