Index: arch/ia32/Makefile.inc
===================================================================
--- arch/ia32/Makefile.inc	(revision f3ebb6497f267e4a44a4e59b458382cb8b11bc98)
+++ arch/ia32/Makefile.inc	(revision c01bd2804fd614b41795206b217e7ea7ab277eb3)
@@ -14,5 +14,5 @@
 
 CPPFLAGS=$(DEFS) -nostdinc -I../include
-CFLAGS=$(CPPFLAGS) -nostdlib -fno-builtin -fomit-frame-pointer -Wmissing-prototypes -Werror -O3
+CFLAGS=$(CPPFLAGS) -nostdlib -fno-builtin -fomit-frame-pointer -Wmissing-prototypes -Werror -O0
 LFLAGS=-M -no-check-sections -T ../arch/ia32/_link.ld
 
Index: arch/ia32/src/cpu/cpu.c
===================================================================
--- arch/ia32/src/cpu/cpu.c	(revision f3ebb6497f267e4a44a4e59b458382cb8b11bc98)
+++ arch/ia32/src/cpu/cpu.c	(revision c01bd2804fd614b41795206b217e7ea7ab277eb3)
@@ -132,4 +132,5 @@
 		CPU->arch.stepping = (info.cpuid_eax>>0)&0xf;						
 	}
+    set_TS_flag();
 }
 
Index: arch/ia32/src/fpu_context.c
===================================================================
--- arch/ia32/src/fpu_context.c	(revision f3ebb6497f267e4a44a4e59b458382cb8b11bc98)
+++ arch/ia32/src/fpu_context.c	(revision c01bd2804fd614b41795206b217e7ea7ab277eb3)
@@ -52,26 +52,28 @@
 void fpu_lazy_context_save(fpu_context_t *fctx)
 {
-    printf("");
-    asm(
-        "mov %0,%%eax;"
-        "fxsave (%%eax);"
-	:"=m"(fctx)
-	:
-	:"eax"
-    );	
-    printf("");
+	asm
+	(
+		"push %%eax;"
+		"mov 0x8(%%esp),%%eax;"
+		"fnsave (%%eax);"
+		"pop %%eax;"
+		:"=m"(fctx)
+		:
+		:"eax"
+	);	
 }
 
 void fpu_lazy_context_restore(fpu_context_t *fctx)
 {
-    printf("");
-    asm(
-        "mov %0,%%eax;"
-        "fxrstor (%%eax);"
-	:"=m"(fctx)
-	:
-	:"eax"
-    );
-    printf("");    
+	asm
+	(
+		"push %%eax;"
+		"mov 0x8(%%esp),%%eax;"
+		"frstor (%%eax);"
+		"pop %%eax;"
+		:"=m"(fctx)
+		:
+		:"eax"
+	);
 }
 
Index: arch/ia32/src/interrupt.c
===================================================================
--- arch/ia32/src/interrupt.c	(revision f3ebb6497f267e4a44a4e59b458382cb8b11bc98)
+++ arch/ia32/src/interrupt.c	(revision c01bd2804fd614b41795206b217e7ea7ab277eb3)
@@ -102,5 +102,6 @@
         if ((CPU->fpu_owner)!=NULL) 
 	{  
-//	        printf("owner %X\n",(int)(&((CPU->fpu_owner)->saved_fpu_context)));        
+//		printf("tid:%d \n", THREAD->tid);
+//		printf("owner:%d\n", (CPU->fpu_owner)->tid);
 	        fpu_lazy_context_save(&((CPU->fpu_owner)->saved_fpu_context));
 
