diff -Nru a/include/asm-i386/i387.h b/include/asm-i386/i387.h --- a/include/asm-i386/i387.h 2004-05-06 12:26:10 -07:00 +++ b/include/asm-i386/i387.h 2004-06-12 19:12:23 -07:00 @@ -51,7 +51,7 @@ #define __clear_fpu( tsk ) \ do { \ if ((tsk)->thread_info->status & TS_USEDFPU) { \ - asm volatile("fwait"); \ + asm volatile("fnclex ; fwait"); \ (tsk)->thread_info->status &= ~TS_USEDFPU; \ stts(); \ } \ diff -Nru a/include/asm-x86_64/i387.h b/include/asm-x86_64/i387.h --- a/include/asm-x86_64/i387.h 2004-06-13 20:43:56.742530792 +0100 +++ a/include/asm-x86_64/i387.h 2004-06-13 20:42:59.200278544 +0100 @@ -46,7 +46,7 @@ #define clear_fpu(tsk) do { \ if ((tsk)->thread_info->status & TS_USEDFPU) { \ - asm volatile("fwait"); \ + asm volatile("fnclex; fwait"); \ (tsk)->thread_info->status &= ~TS_USEDFPU; \ stts(); \ } \