Index: /trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp	(revision 45350)
+++ /trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp	(revision 45351)
@@ -2591,6 +2591,5 @@
      * Guest FPU.
      */
-    if (   (pVCpu->hm.s.fContextUseFlags & HM_CHANGED_GUEST_CR0)
-        || (pVCpu->hm.s.fContextUseFlags & HM_CHANGED_GUEST_FPU))
+    if (pVCpu->hm.s.fContextUseFlags & HM_CHANGED_GUEST_CR0)
     {
         uint64_t u64GuestCR0 = pCtx->cr0;
@@ -2734,12 +2733,11 @@
         AssertRCReturn(rc, rc);
 
-        pVCpu->hm.s.fContextUseFlags &= ~(HM_CHANGED_GUEST_CR0 | HM_CHANGED_GUEST_FPU);
+        pVCpu->hm.s.fContextUseFlags &= ~HM_CHANGED_GUEST_CR0;
     }
 
     /*
      * Guest CR2.
-     * It's always loaded late in the assembler code. Nothing to do here.
+     * It's always loaded in the assembler code. Nothing to do here.
      */
-    pVCpu->hm.s.fContextUseFlags &= ~HM_CHANGED_GUEST_CR2;
 
     /*
@@ -6221,8 +6219,8 @@
     LogFlowFunc(("pVM=%p pVCpu=%p\n", pVM, pVCpu));
 
-    /* For longjmp reentrants we need not load the guest state all over again. */
+    /* For longjmp reentrants we need not load the guest state again. */
     if (!pVCpu->hm.s.fContextUseFlags)
         return VINF_SUCCESS;
-
+    
     /* Determine real-on-v86 mode. */
     pVCpu->hm.s.vmx.RealMode.fRealOnV86Active = false;
@@ -6232,4 +6230,6 @@
         pVCpu->hm.s.vmx.RealMode.fRealOnV86Active = true;
     }
+
+    Log(("LoadGuest flags=%#RX32\n", pVCpu->hm.s.fContextUseFlags));
 
     int rc = hmR0VmxLoadGuestEntryCtls(pVM, pVCpu, pCtx);
@@ -7522,5 +7522,4 @@
                 case 2: /* CR2 */
                     Log(("CR2 write rc=%d\n", rc));
-                    pVCpu->hm.s.fContextUseFlags |= HM_CHANGED_GUEST_CR2;
                     break;
                 case 3: /* CR3 */
@@ -8183,5 +8182,5 @@
         Assert(CPUMIsGuestFPUStateActive(pVCpu));
 
-        pVCpu->hm.s.fContextUseFlags |= HM_CHANGED_GUEST_FPU;
+        pVCpu->hm.s.fContextUseFlags |= HM_CHANGED_GUEST_CR0;
         STAM_COUNTER_INC(&pVCpu->hm.s.StatExitShadowNM);
         return VINF_SUCCESS;
@@ -8477,5 +8476,4 @@
         {
             pMixedCtx->cr2 = pVmxTransient->uExitQualification;
-            pVCpu->hm.s.fContextUseFlags |= HM_CHANGED_GUEST_CR2;
             rc = hmR0VmxInjectEventVmcs(pVM, pVCpu, pMixedCtx,
                                         VMX_VMCS_CTRL_ENTRY_IRQ_INFO_FROM_EXIT_INT_INFO(pVmxTransient->uExitIntrInfo),
@@ -8561,5 +8559,4 @@
             TRPMResetTrap(pVCpu);
             pMixedCtx->cr2 = pVmxTransient->uExitQualification;
-            pVCpu->hm.s.fContextUseFlags |= HM_CHANGED_GUEST_CR2;
             rc = hmR0VmxInjectEventVmcs(pVM, pVCpu, pMixedCtx,
                                         VMX_VMCS_CTRL_ENTRY_IRQ_INFO_FROM_EXIT_INT_INFO(pVmxTransient->uExitIntrInfo),
Index: /trunk/src/VBox/VMM/include/HMInternal.h
===================================================================
--- /trunk/src/VBox/VMM/include/HMInternal.h	(revision 45350)
+++ /trunk/src/VBox/VMM/include/HMInternal.h	(revision 45351)
@@ -102,35 +102,31 @@
 # define HM_CHANGED_GUEST_RSP                    RT_BIT(1)
 # define HM_CHANGED_GUEST_RFLAGS                 RT_BIT(2)
-# define HM_CHANGED_GUEST_FPU                    RT_BIT(3)
-# define HM_CHANGED_GUEST_CR0                    RT_BIT(4)
-# define HM_CHANGED_GUEST_CR2                    RT_BIT(5)
-# define HM_CHANGED_GUEST_CR3                    RT_BIT(6)
-# define HM_CHANGED_GUEST_CR4                    RT_BIT(7)
-# define HM_CHANGED_GUEST_GDTR                   RT_BIT(8)
-# define HM_CHANGED_GUEST_IDTR                   RT_BIT(9)
-# define HM_CHANGED_GUEST_LDTR                   RT_BIT(10)
-# define HM_CHANGED_GUEST_TR                     RT_BIT(11)
-# define HM_CHANGED_GUEST_SEGMENT_REGS           RT_BIT(12)
-# define HM_CHANGED_GUEST_DEBUG                  RT_BIT(13)
-# define HM_CHANGED_GUEST_FS_BASE_MSR            RT_BIT(14)
-# define HM_CHANGED_GUEST_GS_BASE_MSR            RT_BIT(15)
-# define HM_CHANGED_GUEST_SYSENTER_CS_MSR        RT_BIT(16)
-# define HM_CHANGED_GUEST_SYSENTER_EIP_MSR       RT_BIT(17)
-# define HM_CHANGED_GUEST_SYSENTER_ESP_MSR       RT_BIT(18)
-# define HM_CHANGED_GUEST_INTR_STATE             RT_BIT(19)
-# define HM_CHANGED_VMX_GUEST_AUTO_MSRS          RT_BIT(20)
-# define HM_CHANGED_VMX_GUEST_ACTIVITY_STATE     RT_BIT(21)
-# define HM_CHANGED_VMX_GUEST_APIC_STATE         RT_BIT(22)
-# define HM_CHANGED_VMX_ENTRY_CTLS               RT_BIT(23)
-# define HM_CHANGED_VMX_EXIT_CTLS                RT_BIT(24)
-
-# define HM_CHANGED_HOST_CONTEXT                 RT_BIT(25)
+# define HM_CHANGED_GUEST_CR0                    RT_BIT(3)
+# define HM_CHANGED_GUEST_CR3                    RT_BIT(4)
+# define HM_CHANGED_GUEST_CR4                    RT_BIT(5)
+# define HM_CHANGED_GUEST_GDTR                   RT_BIT(6)
+# define HM_CHANGED_GUEST_IDTR                   RT_BIT(7)
+# define HM_CHANGED_GUEST_LDTR                   RT_BIT(8)
+# define HM_CHANGED_GUEST_TR                     RT_BIT(9)
+# define HM_CHANGED_GUEST_SEGMENT_REGS           RT_BIT(10)
+# define HM_CHANGED_GUEST_DEBUG                  RT_BIT(11)
+# define HM_CHANGED_GUEST_FS_BASE_MSR            RT_BIT(12)
+# define HM_CHANGED_GUEST_GS_BASE_MSR            RT_BIT(13)
+# define HM_CHANGED_GUEST_SYSENTER_CS_MSR        RT_BIT(14)
+# define HM_CHANGED_GUEST_SYSENTER_EIP_MSR       RT_BIT(15)
+# define HM_CHANGED_GUEST_SYSENTER_ESP_MSR       RT_BIT(16)
+# define HM_CHANGED_GUEST_INTR_STATE             RT_BIT(17)
+# define HM_CHANGED_VMX_GUEST_AUTO_MSRS          RT_BIT(18)
+# define HM_CHANGED_VMX_GUEST_ACTIVITY_STATE     RT_BIT(19)
+# define HM_CHANGED_VMX_GUEST_APIC_STATE         RT_BIT(20)
+# define HM_CHANGED_VMX_ENTRY_CTLS               RT_BIT(21)
+# define HM_CHANGED_VMX_EXIT_CTLS                RT_BIT(22)
+
+# define HM_CHANGED_HOST_CONTEXT                 RT_BIT(23)
 
 # define HM_CHANGED_ALL_GUEST   (  HM_CHANGED_GUEST_RIP                \
                                  | HM_CHANGED_GUEST_RSP                \
                                  | HM_CHANGED_GUEST_RFLAGS             \
-                                 | HM_CHANGED_GUEST_FPU                \
                                  | HM_CHANGED_GUEST_CR0                \
-                                 | HM_CHANGED_GUEST_CR2                \
                                  | HM_CHANGED_GUEST_CR3                \
                                  | HM_CHANGED_GUEST_CR4                \
