Index: trunk/src/VBox/VMM/VMMSwitcher/32BitTo32Bit.asm
===================================================================
--- trunk/src/VBox/VMM/VMMSwitcher/32BitTo32Bit.asm	(revision 16847)
+++ trunk/src/VBox/VMM/VMMSwitcher/32BitTo32Bit.asm	(revision 16859)
@@ -28,5 +28,4 @@
 %define SWITCHER_FIX_INTER_CR3_HC   FIX_INTER_32BIT_CR3
 %define SWITCHER_FIX_INTER_CR3_GC   FIX_INTER_32BIT_CR3
-%define SWITCHER_FIX_HYPER_CR3      FIX_HYPER_32BIT_CR3
 
 ;*******************************************************************************
Index: trunk/src/VBox/VMM/VMMSwitcher/32BitToPAE.asm
===================================================================
--- trunk/src/VBox/VMM/VMMSwitcher/32BitToPAE.asm	(revision 16847)
+++ trunk/src/VBox/VMM/VMMSwitcher/32BitToPAE.asm	(revision 16859)
@@ -28,5 +28,4 @@
 %define SWITCHER_FIX_INTER_CR3_HC   FIX_INTER_32BIT_CR3
 %define SWITCHER_FIX_INTER_CR3_GC   FIX_INTER_PAE_CR3
-%define SWITCHER_FIX_HYPER_CR3      FIX_HYPER_PAE_CR3
 %define NEED_PAE_ON_32BIT_HOST  1
 
Index: trunk/src/VBox/VMM/VMMSwitcher/AMD64To32Bit.asm
===================================================================
--- trunk/src/VBox/VMM/VMMSwitcher/AMD64To32Bit.asm	(revision 16847)
+++ trunk/src/VBox/VMM/VMMSwitcher/AMD64To32Bit.asm	(revision 16859)
@@ -30,5 +30,4 @@
 ;%define SWITCHER_FIX_INTER_CR3_HC   FIX_INTER_AMD64_CR3
 %define SWITCHER_FIX_INTER_CR3_GC   FIX_INTER_32BIT_CR3
-%define SWITCHER_FIX_HYPER_CR3      FIX_HYPER_32BIT_CR3
 
 
Index: trunk/src/VBox/VMM/VMMSwitcher/AMD64ToPAE.asm
===================================================================
--- trunk/src/VBox/VMM/VMMSwitcher/AMD64ToPAE.asm	(revision 16847)
+++ trunk/src/VBox/VMM/VMMSwitcher/AMD64ToPAE.asm	(revision 16859)
@@ -30,5 +30,4 @@
 ;%define SWITCHER_FIX_INTER_CR3_HC   FIX_INTER_AMD64_CR3
 %define SWITCHER_FIX_INTER_CR3_GC   FIX_INTER_PAE_CR3
-%define SWITCHER_FIX_HYPER_CR3      FIX_HYPER_PAE_CR3
 
 
Index: trunk/src/VBox/VMM/VMMSwitcher/AMD64andLegacy.mac
===================================================================
--- trunk/src/VBox/VMM/VMMSwitcher/AMD64andLegacy.mac	(revision 16847)
+++ trunk/src/VBox/VMM/VMMSwitcher/AMD64andLegacy.mac	(revision 16859)
@@ -329,4 +329,7 @@
     DEBUG_CHAR('1')                     ; trashes esi
 
+    ; Store the hypervisor cr3 for later loading
+    mov     ebp, [rdx + CPUM.Hyper.cr3]
+
     ;;
     ;; Load Intermediate memory context.
@@ -438,7 +441,5 @@
 ;jnz .delay_loop
     ; load final cr3 and do far jump to load cs.
-    FIXUP SWITCHER_FIX_HYPER_CR3, 1
-    mov     eax, 0ffffffffh
-    mov     cr3, eax
+    mov     cr3, ebp                ; ebp set above
     DEBUG_CHAR('0')
 
Index: trunk/src/VBox/VMM/VMMSwitcher/PAETo32Bit.asm
===================================================================
--- trunk/src/VBox/VMM/VMMSwitcher/PAETo32Bit.asm	(revision 16847)
+++ trunk/src/VBox/VMM/VMMSwitcher/PAETo32Bit.asm	(revision 16859)
@@ -28,5 +28,4 @@
 %define SWITCHER_FIX_INTER_CR3_HC   FIX_INTER_PAE_CR3
 %define SWITCHER_FIX_INTER_CR3_GC   FIX_INTER_32BIT_CR3
-%define SWITCHER_FIX_HYPER_CR3      FIX_HYPER_32BIT_CR3
 %define NEED_32BIT_ON_PAE_HOST  1
 
Index: trunk/src/VBox/VMM/VMMSwitcher/PAEToPAE.asm
===================================================================
--- trunk/src/VBox/VMM/VMMSwitcher/PAEToPAE.asm	(revision 16847)
+++ trunk/src/VBox/VMM/VMMSwitcher/PAEToPAE.asm	(revision 16859)
@@ -28,5 +28,4 @@
 %define SWITCHER_FIX_INTER_CR3_HC   FIX_INTER_PAE_CR3
 %define SWITCHER_FIX_INTER_CR3_GC   FIX_INTER_PAE_CR3
-%define SWITCHER_FIX_HYPER_CR3      FIX_HYPER_PAE_CR3
 
 ;*******************************************************************************
Index: trunk/src/VBox/VMM/VMMSwitcher/PAEand32Bit.mac
===================================================================
--- trunk/src/VBox/VMM/VMMSwitcher/PAEand32Bit.mac	(revision 16847)
+++ trunk/src/VBox/VMM/VMMSwitcher/PAEand32Bit.mac	(revision 16859)
@@ -215,4 +215,7 @@
     DEBUG_CHAR('1')                     ; trashes esi
 
+    ; Store the hypervisor cr3 for later loading
+    mov     ebp, [edx + CPUM.Hyper.cr3]
+    
     ;;
     ;; Load Intermediate memory context.
@@ -269,7 +272,5 @@
     DEBUG_CHAR('-')
     ; load final cr3 and do far jump to load cs.
-    FIXUP SWITCHER_FIX_HYPER_CR3, 1
-    mov     eax, 0ffffffffh
-    mov     cr3, eax
+    mov     cr3, ebp            ; ebp set above
     DEBUG_CHAR('0')
 
Index: trunk/src/VBox/VMM/VMMSwitcher/VMMSwitcher.h
===================================================================
--- trunk/src/VBox/VMM/VMMSwitcher/VMMSwitcher.h	(revision 16847)
+++ trunk/src/VBox/VMM/VMMSwitcher/VMMSwitcher.h	(revision 16859)
@@ -43,6 +43,4 @@
 #define FIX_INTER_PAE_CR3       13
 #define FIX_INTER_AMD64_CR3     14
-#define FIX_HYPER_32BIT_CR3     15
-#define FIX_HYPER_PAE_CR3       16
 #define FIX_HYPER_CS            18
 #define FIX_HYPER_DS            19
Index: trunk/src/VBox/VMM/VMMSwitcher/VMMSwitcher.mac
===================================================================
--- trunk/src/VBox/VMM/VMMSwitcher/VMMSwitcher.mac	(revision 16847)
+++ trunk/src/VBox/VMM/VMMSwitcher/VMMSwitcher.mac	(revision 16859)
@@ -87,6 +87,4 @@
 %define FIX_INTER_PAE_CR3       13
 %define FIX_INTER_AMD64_CR3     14
-%define FIX_HYPER_32BIT_CR3     15
-%define FIX_HYPER_PAE_CR3       16
 %define FIX_HYPER_CS            18
 %define FIX_HYPER_DS            19
