diff --git a/cpu-exec.c b/cpu-exec.c
index 615915c..aa2ee3a 100644
--- a/cpu-exec.c
+++ b/cpu-exec.c
@@ -29,8 +29,6 @@
 
 //#define DEBUG_EXEC
 //#define DEBUG_SIGNAL
-/* enable it to have a fully working x86 emulator for ring 0 */
-//#define RING0_HACKS
 
 #if defined(TARGET_ARM)
 /* XXX: unify with i386 target */
@@ -157,13 +155,16 @@
                     /* if user mode only, we simulate a fake exception
                        which will be hanlded outside the cpu execution
                        loop */
+#if defined(TARGET_I386)
                     do_interrupt_user(env->exception_index, 
                                       env->exception_is_int, 
                                       env->error_code, 
                                       env->exception_next_eip);
+#endif
                     ret = env->exception_index;
                     break;
                 } else {
+#if defined(TARGET_I386)
                     /* simulate a real cpu exception. On i386, it can
                        trigger new exceptions, but we do not handle
                        double or triple faults yet. */
@@ -171,6 +172,7 @@
                                  env->exception_is_int, 
                                  env->error_code, 
                                  env->exception_next_eip);
+#endif
                 }
                 env->exception_index = -1;
             }
@@ -294,8 +296,6 @@
                 T0 = tmp_T0;
 #endif	    
                 /* see if we can patch the calling TB. XXX: remove TF test */
-#ifndef RING0_HACKS
-
                 if (T0 != 0 
 #if defined(TARGET_I386)
                     && !(env->eflags & TF_MASK)
@@ -305,9 +305,8 @@
                     tb_add_jump((TranslationBlock *)(T0 & ~3), T0 & 3, tb);
                     spin_unlock(&tb_lock);
                 }
-#endif
                 tc_ptr = tb->tc_ptr;
-                
+                env->current_tb = tb;
                 /* execute the generated code */
                 gen_func = (void *)tc_ptr;
 #if defined(__sparc__)
@@ -326,6 +325,7 @@
 #else
                 gen_func();
 #endif
+                env->current_tb = NULL;
             }
         } else {
         }
@@ -381,12 +381,6 @@
     return ret;
 }
 
-void cpu_interrupt(CPUState *s)
-{
-    s->interrupt_request = 1;
-}
-
-
 #if defined(TARGET_I386)
 
 void cpu_x86_load_seg(CPUX86State *s, int seg_reg, int selector)
@@ -461,9 +455,8 @@
     TranslationBlock *tb;
     int ret;
     
-#ifdef RING0_HACKS
-    env = global_env; /* XXX: find a better solution */
-#endif
+    if (cpu_single_env)
+        env = cpu_single_env; /* XXX: find a correct solution for multithread */
 #if defined(DEBUG_SIGNAL)
     printf("qemu: SIGSEGV pc=0x%08lx address=%08lx w=%d oldset=0x%08lx\n", 
            pc, address, is_write, *(unsigned long *)old_set);
