Index: /trunk/include/iprt/log.h
===================================================================
--- /trunk/include/iprt/log.h	(revision 13716)
+++ /trunk/include/iprt/log.h	(revision 13717)
@@ -1358,22 +1358,24 @@
  *
  * @param   pLogger             The logger instance to be cloned.
- * @param   pLoggerGC           Where to create the GC logger instance.
- * @param   cbLoggerGC          Amount of memory allocated to for the GC logger instance clone.
- * @param   pfnLoggerGCPtr      Pointer to logger wrapper function for this instance (GC Ptr).
- * @param   pfnFlushGCPtr       Pointer to flush function (GC Ptr).
+ * @param   pLoggerRC           Where to create the RC logger instance.
+ * @param   cbLoggerRC          Amount of memory allocated to for the RC logger
+ *                              instance clone.
+ * @param   pfnLoggerRCPtr      Pointer to logger wrapper function for this
+ *                              instance (RC Ptr).
+ * @param   pfnFlushRCPtr       Pointer to flush function (RC Ptr).
  * @param   fFlags              Logger instance flags, a combination of the RTLOGFLAGS_* values.
  */
-RTDECL(int) RTLogCloneRC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerGC, size_t cbLoggerGC,
-                         RTRCPTR pfnLoggerGCPtr, RTRCPTR pfnFlushGCPtr, RTUINT fFlags);
-
-/**
- * Flushes a GC logger instance to a HC logger.
+RTDECL(int) RTLogCloneRC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerRC, size_t cbLoggerRC,
+                         RTRCPTR pfnLoggerRCPtr, RTRCPTR pfnFlushRCPtr, RTUINT fFlags);
+
+/**
+ * Flushes a RC logger instance to a R3 logger.
  *
  * @returns iprt status code.
- * @param   pLogger     The HC logger instance to flush pLoggerGC to.
- *                      If NULL the default logger is used.
- * @param   pLoggerGC   The GC logger instance to flush.
- */
-RTDECL(void) RTLogFlushGC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerGC);
+ * @param   pLogger     The R3 logger instance to flush pLoggerRC to. If NULL
+ *                      the default logger is used.
+ * @param   pLoggerRC   The RC logger instance to flush.
+ */
+RTDECL(void) RTLogFlushRC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerRC);
 
 /**
Index: /trunk/src/VBox/Runtime/common/log/log.cpp
===================================================================
--- /trunk/src/VBox/Runtime/common/log/log.cpp	(revision 13716)
+++ /trunk/src/VBox/Runtime/common/log/log.cpp	(revision 13717)
@@ -631,26 +631,28 @@
  *
  * @param   pLogger             The logger instance to be cloned.
- * @param   pLoggerGC           Where to create the GC logger instance.
- * @param   cbLoggerGC          Amount of memory allocated to for the GC logger instance clone.
- * @param   pfnLoggerGCPtr      Pointer to logger wrapper function for this instance (GC Ptr).
- * @param   pfnFlushGCPtr       Pointer to flush function (GC Ptr).
+ * @param   pLoggerRC           Where to create the RC logger instance.
+ * @param   cbLoggerRC          Amount of memory allocated to for the RC logger
+ *                              instance clone.
+ * @param   pfnLoggerRCPtr      Pointer to logger wrapper function for this
+ *                              instance (RC Ptr).
+ * @param   pfnFlushRCPtr       Pointer to flush function (RC Ptr).
  * @param   fFlags              Logger instance flags, a combination of the RTLOGFLAGS_* values.
  */
-RTDECL(int) RTLogCloneRC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerGC, size_t cbLoggerGC,
-                         RTRCPTR pfnLoggerGCPtr, RTRCPTR pfnFlushGCPtr, RTUINT fFlags)
+RTDECL(int) RTLogCloneRC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerRC, size_t cbLoggerRC,
+                         RTRCPTR pfnLoggerRCPtr, RTRCPTR pfnFlushRCPtr, RTUINT fFlags)
 {
     /*
      * Validate input.
      */
-   if (    !pLoggerGC
-       ||  !pfnFlushGCPtr
-       ||  !pfnLoggerGCPtr)
+   if (    !pLoggerRC
+       ||  !pfnFlushRCPtr
+       ||  !pfnLoggerRCPtr)
     {
        AssertMsgFailed(("Invalid parameters!\n"));
        return VERR_INVALID_PARAMETER;
     }
-    if (cbLoggerGC < sizeof(*pLoggerGC))
-    {
-        AssertMsgFailed(("%d min=%d\n", cbLoggerGC, sizeof(*pLoggerGC)));
+    if (cbLoggerRC < sizeof(*pLoggerRC))
+    {
+        AssertMsgFailed(("%d min=%d\n", cbLoggerRC, sizeof(*pLoggerRC)));
         return VERR_INVALID_PARAMETER;
     }
@@ -659,12 +661,12 @@
      * Initialize GC instance.
      */
-    pLoggerGC->offScratch   = 0;
-    pLoggerGC->fPendingPrefix = false;
-    pLoggerGC->pfnLogger    = pfnLoggerGCPtr;
-    pLoggerGC->pfnFlush     = pfnFlushGCPtr;
-    pLoggerGC->u32Magic     = RTLOGGERRC_MAGIC;
-    pLoggerGC->fFlags       = fFlags | RTLOGFLAGS_DISABLED;
-    pLoggerGC->cGroups      = 1;
-    pLoggerGC->afGroups[0]  = 0;
+    pLoggerRC->offScratch   = 0;
+    pLoggerRC->fPendingPrefix = false;
+    pLoggerRC->pfnLogger    = pfnLoggerRCPtr;
+    pLoggerRC->pfnFlush     = pfnFlushRCPtr;
+    pLoggerRC->u32Magic     = RTLOGGERRC_MAGIC;
+    pLoggerRC->fFlags       = fFlags | RTLOGFLAGS_DISABLED;
+    pLoggerRC->cGroups      = 1;
+    pLoggerRC->afGroups[0]  = 0;
 
     /*
@@ -681,17 +683,17 @@
      * Check if there's enough space for the groups.
      */
-    if (cbLoggerGC < (size_t)RT_OFFSETOF(RTLOGGERRC, afGroups[pLogger->cGroups]))
-    {
-        AssertMsgFailed(("%d req=%d cGroups=%d\n", cbLoggerGC, RT_OFFSETOF(RTLOGGERRC, afGroups[pLogger->cGroups]), pLogger->cGroups));
+    if (cbLoggerRC < (size_t)RT_OFFSETOF(RTLOGGERRC, afGroups[pLogger->cGroups]))
+    {
+        AssertMsgFailed(("%d req=%d cGroups=%d\n", cbLoggerRC, RT_OFFSETOF(RTLOGGERRC, afGroups[pLogger->cGroups]), pLogger->cGroups));
         return VERR_INVALID_PARAMETER;
     }
-    memcpy(&pLoggerGC->afGroups[0], &pLogger->afGroups[0], pLogger->cGroups * sizeof(pLoggerGC->afGroups[0]));
-    pLoggerGC->cGroups = pLogger->cGroups;
+    memcpy(&pLoggerRC->afGroups[0], &pLogger->afGroups[0], pLogger->cGroups * sizeof(pLoggerRC->afGroups[0]));
+    pLoggerRC->cGroups = pLogger->cGroups;
 
     /*
      * Copy bits from the HC instance.
      */
-    pLoggerGC->fPendingPrefix = pLogger->fPendingPrefix;
-    pLoggerGC->fFlags |= pLogger->fFlags;
+    pLoggerRC->fPendingPrefix = pLogger->fPendingPrefix;
+    pLoggerRC->fFlags |= pLogger->fFlags;
 
     /*
@@ -700,5 +702,5 @@
     if (    pLogger->fDestFlags
         &&  !((pLogger->fFlags | fFlags) & RTLOGFLAGS_DISABLED))
-        pLoggerGC->fFlags &= ~RTLOGFLAGS_DISABLED;
+        pLoggerRC->fFlags &= ~RTLOGFLAGS_DISABLED;
 
     return VINF_SUCCESS;
@@ -707,13 +709,13 @@
 
 /**
- * Flushes a GC logger instance to a HC logger.
+ * Flushes a RC logger instance to a R3 logger.
  *
  *
  * @returns iprt status code.
- * @param   pLogger     The HC logger instance to flush pLoggerGC to.
- *                      If NULL the default logger is used.
- * @param   pLoggerGC   The GC logger instance to flush.
- */
-RTDECL(void) RTLogFlushGC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerGC)
+ * @param   pLogger     The R3 logger instance to flush pLoggerRC to. If NULL
+ *                      the default logger is used.
+ * @param   pLoggerRC   The RC logger instance to flush.
+ */
+RTDECL(void) RTLogFlushRC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerRC)
 {
     /*
@@ -725,5 +727,5 @@
         if (!pLogger)
         {
-            pLoggerGC->offScratch = 0;
+            pLoggerRC->offScratch = 0;
             return;
         }
@@ -734,5 +736,5 @@
      */
     if (    pLogger->offScratch
-        ||  pLoggerGC->offScratch)
+        ||  pLoggerRC->offScratch)
     {
         /*
@@ -747,9 +749,9 @@
          * flush the HC instance.
          */
-        if (pLoggerGC->offScratch)
-        {
-            rtLogOutput(pLogger, pLoggerGC->achScratch, pLoggerGC->offScratch);
+        if (pLoggerRC->offScratch)
+        {
+            rtLogOutput(pLogger, pLoggerRC->achScratch, pLoggerRC->offScratch);
             rtLogOutput(pLogger, NULL, 0);
-            pLoggerGC->offScratch = 0;
+            pLoggerRC->offScratch = 0;
         }
 
Index: /trunk/src/VBox/VMM/VMM.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMM.cpp	(revision 13716)
+++ /trunk/src/VBox/VMM/VMM.cpp	(revision 13717)
@@ -586,5 +586,5 @@
 #ifdef VBOX_WITH_NMI
     /*
-     * Map the host APIC into GC - This may be host os specific!
+     * Map the host APIC into GC - This is AMD/Intel + Host OS specific!
      */
     if (VBOX_SUCCESS(rc))
@@ -657,5 +657,5 @@
 VMMR3DECL(int) VMMR3InitRC(PVM pVM)
 {
-    /* In VMX mode, there's no need to init GC. */
+    /* In VMX mode, there's no need to init RC. */
     if (pVM->vmm.s.fSwitcherDisabled)
         return VINF_SUCCESS;
@@ -678,5 +678,5 @@
         CPUMPushHyper(pVM, VMMGetSvnRev());             /* Param 2: Version argument. */
         CPUMPushHyper(pVM, VMMGC_DO_VMMGC_INIT);        /* Param 1: Operation. */
-        CPUMPushHyper(pVM, pVM->pVMGC);                 /* Param 0: pVM */
+        CPUMPushHyper(pVM, pVM->pVMRC);                 /* Param 0: pVM */
         CPUMPushHyper(pVM, 3 * sizeof(RTGCPTR32));      /* trampoline param: stacksize.  */
         CPUMPushHyper(pVM, GCPtrEP);                    /* Call EIP. */
@@ -695,10 +695,10 @@
             if (    pLogger
                 &&  pLogger->offScratch > 0)
-                RTLogFlushGC(NULL, pLogger);
+                RTLogFlushRC(NULL, pLogger);
 #endif
 #ifdef VBOX_WITH_RC_RELEASE_LOGGING
             PRTLOGGERRC pRelLogger = pVM->vmm.s.pRCRelLoggerR3;
             if (RT_UNLIKELY(pRelLogger && pRelLogger->offScratch > 0))
-                RTLogFlushGC(RTLogRelDefaultInstance(), pRelLogger);
+                RTLogFlushRC(RTLogRelDefaultInstance(), pRelLogger);
 #endif
             if (rc != VINF_VMM_CALL_HOST)
@@ -784,5 +784,5 @@
 
     /*
-     * Recalc the GC address.
+     * Recalc the RC address.
      */
     pVM->vmm.s.pvCoreCodeRC = MMHyperR3ToRC(pVM, pVM->vmm.s.pvCoreCodeR3);
@@ -806,5 +806,5 @@
             pSwitcher->pfnRelocate(pVM,
                                    pSwitcher,
-                                   (uint8_t *)pVM->vmm.s.pvCoreCodeR0 + off,
+                                   pVM->vmm.s.pvCoreCodeR0 + off,
                                    (uint8_t *)pVM->vmm.s.pvCoreCodeR3 + off,
                                    pVM->vmm.s.pvCoreCodeRC + off,
@@ -814,16 +814,16 @@
 
     /*
-     * Recalc the GC address for the current switcher.
+     * Recalc the RC address for the current switcher.
      */
     PVMMSWITCHERDEF pSwitcher   = s_apSwitchers[pVM->vmm.s.enmSwitcher];
-    RTGCPTR         GCPtr       = pVM->vmm.s.pvCoreCodeRC + pVM->vmm.s.aoffSwitchers[pVM->vmm.s.enmSwitcher];
-    pVM->vmm.s.pfnGuestToHostRC         = GCPtr + pSwitcher->offGCGuestToHost;
-    pVM->vmm.s.pfnCallTrampolineRC      = GCPtr + pSwitcher->offGCCallTrampoline;
-    pVM->pfnVMMGCGuestToHostAsm         = GCPtr + pSwitcher->offGCGuestToHostAsm;
-    pVM->pfnVMMGCGuestToHostAsmHyperCtx = GCPtr + pSwitcher->offGCGuestToHostAsmHyperCtx;
-    pVM->pfnVMMGCGuestToHostAsmGuestCtx = GCPtr + pSwitcher->offGCGuestToHostAsmGuestCtx;
-
-    /*
-     * Get other GC entry points.
+    RTRCPTR         RCPtr       = pVM->vmm.s.pvCoreCodeRC + pVM->vmm.s.aoffSwitchers[pVM->vmm.s.enmSwitcher];
+    pVM->vmm.s.pfnGuestToHostRC         = RCPtr + pSwitcher->offGCGuestToHost;
+    pVM->vmm.s.pfnCallTrampolineRC      = RCPtr + pSwitcher->offGCCallTrampoline;
+    pVM->pfnVMMGCGuestToHostAsm         = RCPtr + pSwitcher->offGCGuestToHostAsm;
+    pVM->pfnVMMGCGuestToHostAsmHyperCtx = RCPtr + pSwitcher->offGCGuestToHostAsmHyperCtx;
+    pVM->pfnVMMGCGuestToHostAsmGuestCtx = RCPtr + pSwitcher->offGCGuestToHostAsmGuestCtx;
+
+    /*
+     * Get other RC entry points.
      */
     int rc = PDMR3LdrGetSymbolRC(pVM, VMMGC_MAIN_MODULE_NAME, "CPUMGCResumeGuest", &pVM->vmm.s.pfnCPUMRCResumeGuest);
@@ -841,5 +841,5 @@
 
 /**
- * Updates the settings for the GC and R0 loggers.
+ * Updates the settings for the RC and R0 loggers.
  *
  * @returns VBox status code.
@@ -849,5 +849,5 @@
 {
     /*
-     * Simply clone the logger instance (for GC).
+     * Simply clone the logger instance (for RC).
      */
     int rc = VINF_SUCCESS;
@@ -869,8 +869,9 @@
         rc = PDMR3LdrGetSymbolRC(pVM, VMMGC_MAIN_MODULE_NAME, "vmmGCLoggerWrapper", &RCPtrLoggerWrapper);
         AssertReleaseMsgRC(rc, ("vmmGCLoggerWrapper not found! rc=%Vra\n", rc));
+
         pVM->vmm.s.pRCLoggerRC = MMHyperR3ToRC(pVM, pVM->vmm.s.pRCLoggerR3);
         rc = RTLogCloneRC(NULL /* default */, pVM->vmm.s.pRCLoggerR3, pVM->vmm.s.cbRCLogger,
                           RCPtrLoggerWrapper,  RCPtrLoggerFlush, RTLOGFLAGS_BUFFERED);
-        AssertReleaseMsgRC(rc, ("RTLogCloneGC failed! rc=%Vra\n", rc));
+        AssertReleaseMsgRC(rc, ("RTLogCloneRC failed! rc=%Vra\n", rc));
     }
 
@@ -881,8 +882,9 @@
         rc = PDMR3LdrGetSymbolRC(pVM, VMMGC_MAIN_MODULE_NAME, "vmmGCRelLoggerWrapper", &RCPtrLoggerWrapper);
         AssertReleaseMsgRC(rc, ("vmmGCRelLoggerWrapper not found! rc=%Vra\n", rc));
+
         pVM->vmm.s.pRCRelLoggerRC = MMHyperR3ToRC(pVM, pVM->vmm.s.pRCRelLoggerR3);
         rc = RTLogCloneRC(RTLogRelDefaultInstance(), pVM->vmm.s.pRCRelLoggerR3, pVM->vmm.s.cbRCRelLogger,
                           RCPtrLoggerWrapper,  RCPtrLoggerFlush, RTLOGFLAGS_BUFFERED);
-        AssertReleaseMsgRC(rc, ("RTLogCloneGC failed! rc=%Vra\n", rc));
+        AssertReleaseMsgRC(rc, ("RTLogCloneRC failed! rc=%Vra\n", rc));
     }
 #endif /* VBOX_WITH_RC_RELEASE_LOGGING */
@@ -908,5 +910,5 @@
                                   *(PFNRTLOGGER *)&pfnLoggerWrapper, *(PFNRTLOGFLUSH *)&pfnLoggerFlush,
                                   RTLOGFLAGS_BUFFERED, RTLOGDEST_DUMMY);
-            AssertReleaseMsgRCReturn(rc, ("RTLogCloneGC failed! rc=%Vra\n", rc), rc);
+            AssertReleaseMsgRCReturn(rc, ("RTLogCreateForR0 failed! rc=%Vra\n", rc), rc);
             pR0LoggerR3->fCreated = true;
         }
@@ -926,5 +928,5 @@
  * @param   pSwitcher   The switcher definition.
  * @param   pu8CodeR3   Pointer to the core code block for the switcher, ring-3 mapping.
- * @param   pu8CodeR0   Pointer to the core code block for the switcher, ring-0 mapping.
+ * @param   R0PtrCode   Pointer to the core code block for the switcher, ring-0 mapping.
  * @param   GCPtrCode   The guest context address corresponding to pu8Code.
  * @param   u32IDCode   The identity mapped (ID) address corresponding to pu8Code.
@@ -935,5 +937,5 @@
  * @param   SelCS64     The 64-bit mode hypervisor CS selector.
  */
-static void vmmR3SwitcherGenericRelocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode,
+static void vmmR3SwitcherGenericRelocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode,
                                          RTSEL SelCS, RTSEL SelDS, RTSEL SelTSS, RTGCPTR GCPtrGDT, RTSEL SelCS64)
 {
@@ -993,5 +995,5 @@
                 uint32_t offTrg = *u.pu32++;
                 Assert(offTrg - pSwitcher->offIDCode0 < pSwitcher->cbIDCode0 || offTrg - pSwitcher->offIDCode1 < pSwitcher->cbIDCode1);
-                *uSrc.pu32 = (uint32_t)((u32IDCode + offTrg) - ((uintptr_t)pu8CodeR0 + offSrc + 4));
+                *uSrc.pu32 = (uint32_t)((u32IDCode + offTrg) - (R0PtrCode + offSrc + 4));
                 break;
             }
@@ -1005,5 +1007,5 @@
                 uint32_t offTrg = *u.pu32++;
                 Assert(offTrg - pSwitcher->offHCCode0 < pSwitcher->cbHCCode0 || offTrg - pSwitcher->offHCCode1 < pSwitcher->cbHCCode1);
-                *uSrc.pu32 = (uint32_t)(((uintptr_t)pu8CodeR0 + offTrg) - (GCPtrCode + offSrc + 4));
+                *uSrc.pu32 = (uint32_t)((R0PtrCode + offTrg) - (GCPtrCode + offSrc + 4));
                 break;
             }
@@ -1029,5 +1031,5 @@
                 uint32_t offTrg = *u.pu32++;
                 Assert(offTrg - pSwitcher->offHCCode0 < pSwitcher->cbHCCode0 || offTrg - pSwitcher->offHCCode1 < pSwitcher->cbHCCode1);
-                *uSrc.pu32 = (uint32_t)(((uintptr_t)pu8CodeR0 + offTrg) - (u32IDCode + offSrc + 4));
+                *uSrc.pu32 = (uint32_t)((R0PtrCode + offTrg) - (u32IDCode + offSrc + 4));
                 break;
             }
@@ -1270,5 +1272,5 @@
                 Assert(offSrc < pSwitcher->cbCode);
                 Assert(offTrg - pSwitcher->offHCCode0 < pSwitcher->cbHCCode0 || offTrg - pSwitcher->offHCCode1 < pSwitcher->cbHCCode1);
-                *uSrc.pu32 = (uintptr_t)pu8CodeR0 + offTrg;
+                *uSrc.pu32 = R0PtrCode + offTrg;
                 break;
             }
@@ -1283,5 +1285,5 @@
                 Assert(offSrc < pSwitcher->cbCode);
                 Assert(offTrg - pSwitcher->offHCCode0 < pSwitcher->cbHCCode0 || offTrg - pSwitcher->offHCCode1 < pSwitcher->cbHCCode1);
-                *uSrc.pu64 = (uintptr_t)pu8CodeR0 + offTrg;
+                *uSrc.pu64 = R0PtrCode + offTrg;
                 break;
             }
@@ -1376,5 +1378,5 @@
     {
         RTLogPrintf("*** Disassembly of switcher %d '%s' %#x bytes ***\n"
-                    "   pu8CodeR0   = %p\n"
+                    "   R0PtrCode   = %p\n"
                     "   pu8CodeR3   = %p\n"
                     "   GCPtrCode   = %VGv\n"
@@ -1392,5 +1394,5 @@
                     "   SelTSS      = %04x\n",
                     pSwitcher->enmType, pSwitcher->pszDesc, pSwitcher->cbCode,
-                    pu8CodeR0, pu8CodeR3, GCPtrCode, u32IDCode, VM_GUEST_ADDR(pVM, pVM),
+                    R0PtrCode, pu8CodeR3, GCPtrCode, u32IDCode, VM_GUEST_ADDR(pVM, pVM),
                     VM_GUEST_ADDR(pVM, &pVM->cpum), pVM, &pVM->cpum,
                     GCPtrGDT,
@@ -1411,5 +1413,5 @@
             {
                 pszDesc = "HCCode0";
-                uBase   = (RTUINTPTR)pu8CodeR0;
+                uBase   = R0PtrCode;
                 offCode = pSwitcher->offHCCode0;
                 cbCode  = pSwitcher->cbHCCode0;
@@ -1418,5 +1420,5 @@
             {
                 pszDesc = "HCCode1";
-                uBase   = (RTUINTPTR)pu8CodeR0;
+                uBase   = R0PtrCode;
                 offCode = pSwitcher->offHCCode1;
                 cbCode  = pSwitcher->cbHCCode1;
@@ -1498,7 +1500,7 @@
  * Relocator for the 32-Bit to 32-Bit world switcher.
  */
-DECLCALLBACK(void) vmmR3Switcher32BitTo32Bit_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode)
-{
-    vmmR3SwitcherGenericRelocate(pVM, pSwitcher, pu8CodeR0, pu8CodeR3, GCPtrCode, u32IDCode,
+DECLCALLBACK(void) vmmR3Switcher32BitTo32Bit_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode)
+{
+    vmmR3SwitcherGenericRelocate(pVM, pSwitcher, R0PtrCode, pu8CodeR3, GCPtrCode, u32IDCode,
                                  SELMGetHyperCS(pVM), SELMGetHyperDS(pVM), SELMGetHyperTSS(pVM), SELMGetHyperGDT(pVM), 0);
 }
@@ -1508,7 +1510,7 @@
  * Relocator for the 32-Bit to PAE world switcher.
  */
-DECLCALLBACK(void) vmmR3Switcher32BitToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode)
-{
-    vmmR3SwitcherGenericRelocate(pVM, pSwitcher, pu8CodeR0, pu8CodeR3, GCPtrCode, u32IDCode,
+DECLCALLBACK(void) vmmR3Switcher32BitToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode)
+{
+    vmmR3SwitcherGenericRelocate(pVM, pSwitcher, R0PtrCode, pu8CodeR3, GCPtrCode, u32IDCode,
                                  SELMGetHyperCS(pVM), SELMGetHyperDS(pVM), SELMGetHyperTSS(pVM), SELMGetHyperGDT(pVM), 0);
 }
@@ -1518,7 +1520,7 @@
  * Relocator for the PAE to 32-Bit world switcher.
  */
-DECLCALLBACK(void) vmmR3SwitcherPAETo32Bit_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode)
-{
-    vmmR3SwitcherGenericRelocate(pVM, pSwitcher, pu8CodeR0, pu8CodeR3, GCPtrCode, u32IDCode,
+DECLCALLBACK(void) vmmR3SwitcherPAETo32Bit_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode)
+{
+    vmmR3SwitcherGenericRelocate(pVM, pSwitcher, R0PtrCode, pu8CodeR3, GCPtrCode, u32IDCode,
                                  SELMGetHyperCS(pVM), SELMGetHyperDS(pVM), SELMGetHyperTSS(pVM), SELMGetHyperGDT(pVM), 0);
 }
@@ -1528,7 +1530,7 @@
  * Relocator for the PAE to PAE world switcher.
  */
-DECLCALLBACK(void) vmmR3SwitcherPAEToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode)
-{
-    vmmR3SwitcherGenericRelocate(pVM, pSwitcher, pu8CodeR0, pu8CodeR3, GCPtrCode, u32IDCode,
+DECLCALLBACK(void) vmmR3SwitcherPAEToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode)
+{
+    vmmR3SwitcherGenericRelocate(pVM, pSwitcher, R0PtrCode, pu8CodeR3, GCPtrCode, u32IDCode,
                                  SELMGetHyperCS(pVM), SELMGetHyperDS(pVM), SELMGetHyperTSS(pVM), SELMGetHyperGDT(pVM), 0);
 }
@@ -1538,7 +1540,7 @@
  * Relocator for the AMD64 to PAE world switcher.
  */
-DECLCALLBACK(void) vmmR3SwitcherAMD64ToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode)
-{
-    vmmR3SwitcherGenericRelocate(pVM, pSwitcher, pu8CodeR0, pu8CodeR3, GCPtrCode, u32IDCode,
+DECLCALLBACK(void) vmmR3SwitcherAMD64ToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode)
+{
+    vmmR3SwitcherGenericRelocate(pVM, pSwitcher, R0PtrCode, pu8CodeR3, GCPtrCode, u32IDCode,
                                  SELMGetHyperCS(pVM), SELMGetHyperDS(pVM), SELMGetHyperTSS(pVM), SELMGetHyperGDT(pVM), SELMGetHyperCS64(pVM));
 }
@@ -1851,4 +1853,6 @@
  * @returns VBox status code
  * @param   pVM         The VM to operate on.
+ *
+ * @remarks The global VMM lock isn't really used for anything any longer.
  */
 VMMR3DECL(int) VMMR3Lock(PVM pVM)
@@ -1863,4 +1867,6 @@
  * @returns VBox status code
  * @param   pVM         The VM to operate on.
+ *
+ * @remarks The global VMM lock isn't really used for anything any longer.
  */
 VMMR3DECL(int) VMMR3Unlock(PVM pVM)
@@ -1876,4 +1882,6 @@
  * @returns NIL_RTTHREAD if no owner.
  * @param   pVM         The VM to operate on.
+ *
+ * @remarks The global VMM lock isn't really used for anything any longer.
  */
 VMMR3DECL(RTNATIVETHREAD) VMMR3LockGetOwner(PVM pVM)
@@ -1889,4 +1897,6 @@
  * @returns false if not owner.
  * @param   pVM         The VM to operate on.
+ *
+ * @remarks The global VMM lock isn't really used for anything any longer.
  */
 VMMR3DECL(bool) VMMR3LockIsOwner(PVM pVM)
@@ -1897,5 +1907,5 @@
 
 /**
- * Executes guest code.
+ * Executes guest code in the raw-mode context.
  *
  * @param   pVM         VM handle.
@@ -1937,10 +1947,10 @@
         if (    pLogger
             &&  pLogger->offScratch > 0)
-            RTLogFlushGC(NULL, pLogger);
+            RTLogFlushRC(NULL, pLogger);
 #endif
 #ifdef VBOX_WITH_RC_RELEASE_LOGGING
         PRTLOGGERRC pRelLogger = pVM->vmm.s.pRCRelLoggerR3;
         if (RT_UNLIKELY(pRelLogger && pRelLogger->offScratch > 0))
-            RTLogFlushGC(RTLogRelDefaultInstance(), pRelLogger);
+            RTLogFlushRC(RTLogRelDefaultInstance(), pRelLogger);
 #endif
         if (rc != VINF_VMM_CALL_HOST)
@@ -2070,10 +2080,10 @@
         if (    pLogger
             &&  pLogger->offScratch > 0)
-            RTLogFlushGC(NULL, pLogger);
+            RTLogFlushRC(NULL, pLogger);
 #endif
 #ifdef VBOX_WITH_RC_RELEASE_LOGGING
         PRTLOGGERRC pRelLogger = pVM->vmm.s.pRCRelLoggerR3;
         if (RT_UNLIKELY(pRelLogger && pRelLogger->offScratch > 0))
-            RTLogFlushGC(RTLogRelDefaultInstance(), pRelLogger);
+            RTLogFlushRC(RTLogRelDefaultInstance(), pRelLogger);
 #endif
         if (rc == VERR_TRPM_PANIC || rc == VERR_TRPM_DONT_PANIC)
@@ -2126,10 +2136,10 @@
         if (    pLogger
             &&  pLogger->offScratch > 0)
-            RTLogFlushGC(NULL, pLogger);
+            RTLogFlushRC(NULL, pLogger);
 #endif
 #ifdef VBOX_WITH_RC_RELEASE_LOGGING
         PRTLOGGERRC pRelLogger = pVM->vmm.s.pRCRelLoggerR3;
         if (RT_UNLIKELY(pRelLogger && pRelLogger->offScratch > 0))
-            RTLogFlushGC(RTLogRelDefaultInstance(), pRelLogger);
+            RTLogFlushRC(RTLogRelDefaultInstance(), pRelLogger);
 #endif
         if (rc == VERR_TRPM_PANIC || rc == VERR_TRPM_DONT_PANIC)
Index: /trunk/src/VBox/VMM/VMMSwitcher/VMMSwitcher.h
===================================================================
--- /trunk/src/VBox/VMM/VMMSwitcher/VMMSwitcher.h	(revision 13716)
+++ /trunk/src/VBox/VMM/VMMSwitcher/VMMSwitcher.h	(revision 13717)
@@ -75,10 +75,10 @@
  * @param   pVM         VM handle.
  * @param   pSwitcher   Pointer to the switcher structure.
- * @param   pu8CodeR0   Pointer to the first code byte in the ring-0 mapping.
+ * @param   R0PtrCode   Pointer to the first code byte in the ring-0 mapping.
  * @param   pu8CodeR3   Pointer to the first code byte in the ring-3 mapping.
  * @param   GCPtrCode   The GC address of the first code byte.
  * @param   u32IDCode   The address of the identity mapped code (first byte).
  */
-typedef DECLCALLBACK(void) FNVMMSWITCHERRELOCATE(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3,
+typedef DECLCALLBACK(void) FNVMMSWITCHERRELOCATE(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3,
                                                  RTGCPTR GCPtrCode, uint32_t u32IDCode);
 /** Pointer to a FNVMMSWITCHERRELOCATE(). */
@@ -141,12 +141,12 @@
 extern VMMSWITCHERDEF vmmR3SwitcherAMD64ToAMD64_Def;
 
-extern DECLCALLBACK(void) vmmR3Switcher32BitTo32Bit_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
-extern DECLCALLBACK(void) vmmR3Switcher32BitToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
-extern DECLCALLBACK(void) vmmR3Switcher32BitToAMD64_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
-extern DECLCALLBACK(void) vmmR3SwitcherPAETo32Bit_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
-extern DECLCALLBACK(void) vmmR3SwitcherPAEToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
-extern DECLCALLBACK(void) vmmR3SwitcherPAEToAMD64_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
-extern DECLCALLBACK(void) vmmR3SwitcherAMD64ToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
-extern DECLCALLBACK(void) vmmR3SwitcherAMD64ToAMD64_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
+extern DECLCALLBACK(void) vmmR3Switcher32BitTo32Bit_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
+extern DECLCALLBACK(void) vmmR3Switcher32BitToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
+extern DECLCALLBACK(void) vmmR3Switcher32BitToAMD64_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
+extern DECLCALLBACK(void) vmmR3SwitcherPAETo32Bit_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
+extern DECLCALLBACK(void) vmmR3SwitcherPAEToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
+extern DECLCALLBACK(void) vmmR3SwitcherPAEToAMD64_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
+extern DECLCALLBACK(void) vmmR3SwitcherAMD64ToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
+extern DECLCALLBACK(void) vmmR3SwitcherAMD64ToAMD64_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
 __END_DECLS
 
