--- arch/xen/i386/kernel/process.c.orig 2005-02-12 03:39:44.000000000 +0000 +++ arch/xen/i386/kernel/process.c 2005-02-13 02:46:03.000000000 +0000 @@ -563,6 +563,14 @@ if (prev_p->thread_info->status & TS_USEDFPU) { save_init_fpu(prev_p); queue_multicall0(__HYPERVISOR_fpu_taskswitch); + } else { + short msw; + asm ("smsw %[msw]" : [msw] "=g"(msw)); + if (!(msw & 8)) { + signed short fenv[14]; + asm ("fstenv %[fenv]" : [fenv] "=g"(fenv)); + if (fenv [4] != -1) panic ("corrupt FPU"); + } } /*