From: Ingo Molnar , Raphael Kubo da Costa the attached patch makes the i386 FPU-emu code compile. It boots on a newer CPU (fpu-emu code inactive but present). But it might even work on a real i386, if no other bugs get in the way. arch/i386/math-emu/fpu_system.h | 3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) diff -puN arch/i386/math-emu/fpu_system.h~4g4g-fpu-fix arch/i386/math-emu/fpu_system.h --- 25/arch/i386/math-emu/fpu_system.h~4g4g-fpu-fix 2003-08-03 03:40:53.000000000 -0700 +++ 25-akpm/arch/i386/math-emu/fpu_system.h 2003-08-03 03:40:53.000000000 -0700 @@ -15,6 +15,7 @@ #include #include #include +#include /* This sets the pointer FPU_info to point to the argument part of the stack frame of math_emulate() */ @@ -22,7 +23,7 @@ /* s is always from a cpu register, and the cpu does bounds checking * during register load --> no further bounds checks needed */ -#define LDT_DESCRIPTOR(s) (((struct desc_struct *)current->mm->context.ldt)[(s) >> 3]) +#define LDT_DESCRIPTOR(s) (((struct desc_struct *)__kmap_atomic_vaddr(KM_LDT_PAGE0))[(s) >> 3]) #define SEG_D_SIZE(x) ((x).b & (3 << 21)) #define SEG_G_BIT(x) ((x).b & (1 << 23)) #define SEG_GRANULARITY(x) (((x).b & (1 << 23)) ? 4096 : 1) _