diff -Naur old/include/asm-i386/i387.h new/include/asm-i386/i387.h
--- old/include/asm-i386/i387.h	2002-08-03 02:39:45.000000000 +0200
+++ new/include/asm-i386/i387.h	2004-06-17 10:20:17.604715525 +0200
@@ -34,7 +34,7 @@
 
 #define clear_fpu( tsk ) do { \
 	if ( tsk->flags & PF_USEDFPU ) { \
-		asm volatile("fwait"); \
+		asm volatile("fnclex ; fwait"); \
 		tsk->flags &= ~PF_USEDFPU; \
 		stts(); \
 	} \
diff -Naur old/include/asm-x86_64/i387.h new/include/asm-x86_64/i387.h
--- old/include/asm-x86_64/i387.h	2003-08-25 13:44:44.000000000 +0200
+++ new/include/asm-x86_64/i387.h	2004-06-17 10:20:17.619711940 +0200
@@ -34,7 +34,7 @@
 
 #define clear_fpu( tsk ) do { \
 	if ( tsk->flags & PF_USEDFPU ) { \
-		asm volatile("fwait"); \
+		asm volatile("fnclex ; fwait"); \
 		tsk->flags &= ~PF_USEDFPU; \
 		stts(); \
 	} \
