Index: /trunk/src/recompiler_new/target-i386/op_helper.c
===================================================================
--- /trunk/src/recompiler_new/target-i386/op_helper.c	(revision 15898)
+++ /trunk/src/recompiler_new/target-i386/op_helper.c	(revision 15899)
@@ -145,4 +145,6 @@
     unsigned int new_eflags = t0;
 
+    assert(env->eflags & (1<<VM_SHIFT));
+
     /* if virtual interrupt pending and (virtual) interrupts will be enabled -> #GP */
     /* if TF will be set -> #GP */
@@ -151,5 +153,5 @@
         raise_exception(EXCP0D_GPF);
     } else {
-        load_eflags(new_eflags, (TF_MASK | AC_MASK | ID_MASK | NT_MASK) & 0xffff);
+        load_eflags(new_eflags, TF_MASK | AC_MASK | ID_MASK | NT_MASK);
 
         if (new_eflags & IF_MASK) {
@@ -5367,5 +5369,5 @@
 void helper_cli_vme(void)
 {
-    env->eflags &= ~IF_MASK;
+    env->eflags &= ~VIF_MASK;
 }
 
@@ -5376,5 +5378,5 @@
         raise_exception(EXCP0D_GPF);
     }
-    env->eflags |= IF_MASK;
+    env->eflags |= VIF_MASK;
 }
 #endif
Index: /trunk/src/recompiler_new/target-i386/translate.c
===================================================================
--- /trunk/src/recompiler_new/target-i386/translate.c	(revision 15898)
+++ /trunk/src/recompiler_new/target-i386/translate.c	(revision 15899)
@@ -145,4 +145,5 @@
 #ifdef VBOX
     int vme;    /* CR4.VME */
+    int pvi;    /* CR4.PVI */
     int record_call;    /* record calls for CSAM or not? */
 #endif
@@ -8347,4 +8348,5 @@
 #ifdef VBOX
     dc->vme = !!(env->cr[4] & CR4_VME_MASK);
+    dc->pvi = !!(env->cr[4] & CR4_PVI_MASK);
 #ifdef VBOX_WITH_CALL_RECORD
     if (    !(env->state & CPU_RAW_RING0)
