Index: /trunk/Config.kmk
===================================================================
--- /trunk/Config.kmk	(revision 25277)
+++ /trunk/Config.kmk	(revision 25278)
@@ -2067,4 +2067,5 @@
  TEMPLATE_VBOXGC_LIBS               = \
  	$(PATH_SDK_W2K3DDKX86_LIB)/int64.lib
+ TEMPLATE_VBOXGC_POST_CMDS          = $(VBOX_SIGN_IMAGE_CMDS)
 endif # pe
 
@@ -2184,7 +2185,5 @@
 TEMPLATE_VBOXR0_LIBS.x86            = \
 	$(PATH_SDK_W2K3DDKX86_LIB)/int64.lib
- ifdef VBOX_WITH_NATIVE_R0_LOADER
 TEMPLATE_VBOXR0_POST_CMDS           = $(VBOX_SIGN_DRIVER_CMDS)
- endif
 endif # pe
 
Index: /trunk/include/VBox/sup.h
===================================================================
--- /trunk/include/VBox/sup.h	(revision 25277)
+++ /trunk/include/VBox/sup.h	(revision 25278)
@@ -219,10 +219,13 @@
 #if defined(IN_SUP_R0) || defined(IN_SUP_R3) || defined(IN_SUP_GC)
 extern DECLEXPORT(PSUPGLOBALINFOPAGE)   g_pSUPGlobalInfoPage;
-#elif defined(IN_RING0)
-# if 0 /* VBOX_WITH_NATIVE_R0_LOADER */
-#  define g_pSUPGlobalInfoPage          (SUPGetGIP())
+
+#elif !defined(IN_RING0) || defined(RT_OS_WINDOWS)
+extern DECLIMPORT(PSUPGLOBALINFOPAGE)   g_pSUPGlobalInfoPage;
+
+#else /* IN_RING0 && !RT_OS_WINDOWS */
+# if !defined(__GNUC__) || defined(RT_OS_DARWIN) || !defined(RT_ARCH_AMD64)
+#  define g_pSUPGlobalInfoPage          (&g_SUPGlobalInfoPage)
 # else
-extern DECLIMPORT(SUPGLOBALINFOPAGE)    g_SUPGlobalInfoPage;
-#  if defined(__GNUC__) && !defined(RT_OS_DARWIN) && defined(RT_ARCH_AMD64)
+#  define g_pSUPGlobalInfoPage          (SUPGetGIPHlp())
 /** Workaround for ELF+GCC problem on 64-bit hosts.
  * (GCC emits a mov with a R_X86_64_32 reloc, we need R_X86_64_64.) */
@@ -234,11 +237,9 @@
     return pGIP;
 }
-#   define g_pSUPGlobalInfoPage          (SUPGetGIPHlp())
-#  else
-#   define g_pSUPGlobalInfoPage          (&g_SUPGlobalInfoPage)
-#  endif
 # endif
-#else
-extern DECLIMPORT(PSUPGLOBALINFOPAGE)   g_pSUPGlobalInfoPage;
+/** The GIP.
+ * We save a level of indirection by exporting the GIP instead of a variable
+ * pointing to it. */
+extern DECLIMPORT(SUPGLOBALINFOPAGE)    g_SUPGlobalInfoPage;
 #endif
 
Index: /trunk/src/VBox/HostDrivers/Support/Makefile.kmk
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/Makefile.kmk	(revision 25277)
+++ /trunk/src/VBox/HostDrivers/Support/Makefile.kmk	(revision 25278)
@@ -84,7 +84,4 @@
         $(if $(VBOX_WITH_SUPSVC),VBOX_WITH_SUPSVC) \
         $(if $(VBOX_WITH_MAIN),VBOX_WITH_MAIN,)
-ifdef VBOX_WITH_NATIVE_R0_LOADER
- SUPR3_DEFS        += VBOX_WITH_NATIVE_R0_LOADER
-endif
 SUPR3_INCS         := $(PATH_SUB_CURRENT)
 SUPR3_INCS.l4       = $(L4_INCDIR)
@@ -105,7 +102,4 @@
 	$(if $(VBOX_WITH_SUPSVC),VBOX_WITH_SUPSVC,) \
 	$(if $(VBOX_WITH_MAIN),VBOX_WITH_MAIN,)
-ifdef VBOX_WITH_NATIVE_R0_LOADER
- SUPR3HardenedStatic_DEFS   += VBOX_WITH_NATIVE_R0_LOADER
-endif
 SUPR3HardenedStatic_INCS     = .
 SUPR3HardenedStatic_SOURCES  = \
@@ -179,7 +173,4 @@
 VBoxDrv_DEFS         += VBOX_WITH_VMMR0_DISABLE_PREEMPTION
 endif
-ifdef VBOX_WITH_NATIVE_R0_LOADER
- VBoxDrv_DEFS        += VBOX_WITH_NATIVE_R0_LOADER
-endif
 VBoxDrv_SDKS          = W2K3DDK WINPSDKINCS
 VBoxDrv_INCS         := $(PATH_SUB_CURRENT)
@@ -236,7 +227,4 @@
 ifdef VBOX_LINUX_VERSION_2_4
 vboxdrv_DEFS         += EXPORT_SYMTAB
-endif
-ifdef VBOX_WITH_NATIVE_R0_LOADER
- VBoxDrv_DEFS        += VBOX_WITH_NATIVE_R0_LOADER
 endif
 vboxdrv_INCS         := \
@@ -326,7 +314,4 @@
 VBoxDrvTiger_INST        = $(INST_VBOXDRV_TIGER)Contents/MacOS/
 VBoxDrvTiger_DEFS       := IN_RT_R0 IN_SUP_R0 SUPDRV_WITH_RELEASE_LOGGER VBOX_SVN_REV=$(VBOX_SVN_REV)
-ifdef VBOX_WITH_NATIVE_R0_LOADER
- VBoxDrvTiger_DEFS      += VBOX_WITH_NATIVE_R0_LOADER
-endif
 VBoxDrvTiger_DEFS.debug += DEBUG_DARWIN_GIP
 VBoxDrvTiger_INCS        = .
@@ -394,7 +379,4 @@
 VBoxDrv_TEMPLATE      = VBOXR0DRV
 VBoxDrv_DEFS          = IN_RT_R0 IN_SUP_R0
-ifdef VBOX_WITH_NATIVE_R0_LOADER
- VBoxDrv_DEFS        += VBOX_WITH_NATIVE_R0_LOADER
-endif
 VBoxDrv_INCS         := $(PATH_SUB_CURRENT)
 #VBoxDrv_LDFLAGS       = -s -t -v
@@ -413,7 +395,4 @@
 VBoxDrvLib_NOINST     = 1
 VBoxDrvLib_DEFS       = IN_RT_R0 IN_SUP_R0
-ifdef VBOX_WITH_NATIVE_R0_LOADER
- VBoxDrvLib_DEFS     += VBOX_WITH_NATIVE_R0_LOADER
-endif
 VBoxDrvLib_INCS      := \
 	. \
@@ -432,7 +411,4 @@
 vboxdrv_TEMPLATE      = VBOXR0DRV
 vboxdrv_DEFS          = IN_RT_R0 IN_SUP_R0 SUPDRV_WITH_RELEASE_LOGGER VBOX_SVN_REV=$(VBOX_SVN_REV)
-ifdef VBOX_WITH_NATIVE_R0_LOADER
- vboxdrv_DEFS        += VBOX_WITH_NATIVE_R0_LOADER
-endif
 vboxdrv_INCS         := $(PATH_SUB_CURRENT)
 vboxdrv_LIBS          = $(PATH_LIB)/RuntimeR0Drv$(VBOX_SUFF_LIB)
@@ -478,7 +454,4 @@
 endif
 vboxdrv_DEFS         += VBOX_SVN_REV=$(VBOX_SVN_REV)
-ifdef VBOX_WITH_NATIVE_R0_LOADER
- vboxdrv_DEFS        += VBOX_WITH_NATIVE_R0_LOADER
-endif
 vboxdrv_DEPS         += $(VBOX_SVN_REV_KMK)
 vboxdrv_INCS         := $(PATH_SUB_CURRENT)
Index: /trunk/src/VBox/HostDrivers/Support/SUPDrv.c
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/SUPDrv.c	(revision 25277)
+++ /trunk/src/VBox/HostDrivers/Support/SUPDrv.c	(revision 25278)
@@ -262,5 +262,9 @@
 *******************************************************************************/
 /** Pointer to the global info page for implementing SUPGetGIP(). */
-static PSUPGLOBALINFOPAGE g_pSUPGlobalInfoPageInternal = NULL;
+static PSUPGLOBALINFOPAGE      g_pSUPGlobalInfoPageInternal = NULL;
+#if defined(RT_OS_WINDOWS)
+DECLEXPORT(PSUPGLOBALINFOPAGE) g_pSUPGlobalInfoPage = NULL;
+# define SUPR0_EXPORT_GIP_POINTER
+#endif
 
 /**
@@ -317,4 +321,5 @@
     { "SUPR0EnableVTx",                         (void *)SUPR0EnableVTx },
     { "SUPGetGIP",                              (void *)SUPGetGIP },
+    { "g_pSUPGlobalInfoPage",                   (void *)&g_pSUPGlobalInfoPageInternal },
     { "RTMemAlloc",                             (void *)UNWIND_WRAP(RTMemAlloc) },
     { "RTMemAllocZ",                            (void *)UNWIND_WRAP(RTMemAllocZ) },
@@ -1294,15 +1299,11 @@
             REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, pReq->u.In.cbImageWithTabs > 0);
             REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, pReq->u.In.cbImageWithTabs < 16*_1M);
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
             REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, pReq->u.In.cbImageBits > 0);
             REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, pReq->u.In.cbImageBits > 0);
             REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, pReq->u.In.cbImageBits < pReq->u.In.cbImageWithTabs);
-#endif
             REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, pReq->u.In.szName[0]);
             REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, memchr(pReq->u.In.szName, '\0', sizeof(pReq->u.In.szName)));
             REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, !supdrvCheckInvalidChar(pReq->u.In.szName, ";:()[]{}/\\|&*%#@!~`\"'"));
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
             REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, memchr(pReq->u.In.szFilename, '\0', sizeof(pReq->u.In.szFilename)));
-#endif
 
             /* execute */
@@ -3470,7 +3471,5 @@
             pReq->u.Out.pvImageBase   = pImage->pvImage;
             pReq->u.Out.fNeedsLoading = pImage->uState == SUP_IOCTL_LDR_OPEN;
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
             pReq->u.Out.fNativeLoader = pImage->fNative;
-#endif
             supdrvLdrAddUsage(pSession, pImage);
             RTSemFastMutexRelease(pDevExt->mtxLdr);
@@ -3498,9 +3497,5 @@
     pImage->pvImageAlloc    = NULL;
     pImage->cbImageWithTabs = pReq->u.In.cbImageWithTabs;
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
     pImage->cbImageBits     = pReq->u.In.cbImageBits;
-#else
-    pImage->cbImageBits     = pReq->u.In.cbImageWithTabs;
-#endif
     pImage->cSymbols        = 0;
     pImage->paSymbols       = NULL;
@@ -3518,19 +3513,11 @@
      * on the older method.
      */
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
     pImage->fNative         = true;
-    RTSemFastMutexRelease(pDevExt->mtxLdr); /*hack*/
     rc = supdrvOSLdrOpen(pDevExt, pImage, pReq->u.In.szFilename);
-    RTSemFastMutexRequest(pDevExt->mtxLdr); /*hack*/
-#else
-    rc = VERR_NOT_SUPPORTED;
-#endif
     if (rc == VERR_NOT_SUPPORTED)
     {
         pImage->pvImageAlloc = RTMemExecAlloc(pImage->cbImageBits + 31);
         pImage->pvImage     = RT_ALIGN_P(pImage->pvImageAlloc, 32);
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
         pImage->fNative     = false;
-#endif
         rc = pImage->pvImageAlloc ? VINF_SUCCESS : VERR_NO_MEMORY;
     }
@@ -3554,7 +3541,5 @@
     pReq->u.Out.pvImageBase   = pImage->pvImage;
     pReq->u.Out.fNeedsLoading = true;
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
     pReq->u.Out.fNativeLoader = pImage->fNative;
-#endif
     RTSemFastMutexRelease(pDevExt->mtxLdr);
 
@@ -3591,5 +3576,4 @@
         }
 
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
         if (pImage->fNative)
         {
@@ -3602,5 +3586,4 @@
             }
         }
-#endif
     }
     return VINF_SUCCESS;
@@ -3643,18 +3626,10 @@
      * Validate input.
      */
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
     if (   pImage->cbImageWithTabs != pReq->u.In.cbImageWithTabs
         || pImage->cbImageBits     != pReq->u.In.cbImageBits)
-#else
-    if (pImage->cbImageWithTabs != pReq->u.In.cbImageWithTabs)
-#endif
     {
         RTSemFastMutexRelease(pDevExt->mtxLdr);
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
         Log(("SUP_IOCTL_LDR_LOAD: image size mismatch!! %d(prep) != %d(load) or %d != %d\n",
              pImage->cbImageWithTabs, pReq->u.In.cbImageWithTabs, pImage->cbImageBits, pReq->u.In.cbImageBits));
-#else
-        Log(("SUP_IOCTL_LDR_LOAD: image size mismatch!! %d(prep) != %d(load)\n", pImage->cbImageWithTabs, pReq->u.In.cbImageWithTabs));
-#endif
         return VERR_INVALID_HANDLE;
     }
@@ -3751,9 +3726,7 @@
         pImage->pfnModuleTerm = pReq->u.In.pfnModuleTerm;
 
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
         if (pImage->fNative)
             rc = supdrvOSLdrLoad(pDevExt, pImage, pReq->u.In.achImage);
         else
-#endif
             memcpy(pImage->pvImage, &pReq->u.In.achImage[0], pImage->cbImageBits);
     }
@@ -4247,9 +4220,7 @@
     }
 
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
     /* do native unload if appropriate. */
     if (pImage->fNative)
         supdrvOSLdrUnload(pDevExt, pImage);
-#endif
 
     /* free the image */
@@ -4565,4 +4536,7 @@
             dprintf(("supdrvGipCreate: %ld ns interval.\n", (long)u32Interval));
             g_pSUPGlobalInfoPageInternal = pGip;
+#ifdef SUPR0_EXPORT_GIP_POINTER
+            g_pSUPGlobalInfoPage = pGip;
+#endif
             return VINF_SUCCESS;
         }
@@ -4603,4 +4577,7 @@
     }
     g_pSUPGlobalInfoPageInternal = NULL;
+#ifdef SUPR0_EXPORT_GIP_POINTER
+    g_pSUPGlobalInfoPage = NULL;
+#endif
 
     /*
Index: /trunk/src/VBox/HostDrivers/Support/SUPDrvIOC.h
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/SUPDrvIOC.h	(revision 25277)
+++ /trunk/src/VBox/HostDrivers/Support/SUPDrvIOC.h	(revision 25278)
@@ -31,6 +31,4 @@
 #ifndef ___SUPDrvIOC_h___
 #define ___SUPDrvIOC_h___
-
-/*#define VBOX_WITH_NATIVE_R0_LOADER*/
 
 /*
@@ -198,13 +196,6 @@
  * @todo Pending work on next major version change:
  *          - Nothing.
- *
- * @remarks Major version 0x0011YYYY was consumed by the 3.0.12 release. The
- *          next major version used on the trunk will be 0x00120000!
- */
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
+ */
 #define SUPDRV_IOC_VERSION                              0x00120000
-#else
-#define SUPDRV_IOC_VERSION                              0x00100001
-#endif
 
 /** SUP_IOCTL_COOKIE. */
@@ -300,17 +291,13 @@
             /** Size of the image we'll be loading (includeing tables). */
             uint32_t        cbImageWithTabs;
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
             /** The size of the image bits. (Less or equal to cbImageWithTabs.) */
             uint32_t        cbImageBits;
-#endif
             /** Image name.
              * This is the NAME of the image, not the file name. It is used
              * to share code with other processes. (Max len is 32 chars!)  */
             char            szName[32];
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
             /** Image file name.
              * This can be used to load the image using a native loader. */
             char            szFilename[196];
-#endif
         } In;
         struct
@@ -320,8 +307,6 @@
             /** Indicate whether or not the image requires loading. */
             bool            fNeedsLoading;
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
             /** Indicates that we're using the native ring-0 loader. */
             bool            fNativeLoader;
-#endif
         } Out;
     } u;
@@ -425,9 +410,7 @@
             /** Entry point type. */
             SUPLDRLOADEP    eEPType;
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
             /** The size of the image bits (starting at offset 0 and
              * approaching offSymbols). */
             uint32_t        cbImageBits;
-#endif
             /** The offset of the symbol table. */
             uint32_t        offSymbols;
Index: /trunk/src/VBox/HostDrivers/Support/SUPDrvInternal.h
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/SUPDrvInternal.h	(revision 25277)
+++ /trunk/src/VBox/HostDrivers/Support/SUPDrvInternal.h	(revision 25278)
@@ -428,12 +428,10 @@
     /** Usage count. */
     uint32_t volatile               cUsage;
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
-# ifdef RT_OS_WINDOWS
+#ifdef RT_OS_WINDOWS
     /** The section object for the loaded image (fNative=true). */
     void                           *pvNtSectionObj;
-# endif
+#endif
     /** Whether it's loaded by the native loader or not. */
     bool                            fNative;
-#endif
     /** Image name. */
     char                            szName[32];
@@ -666,6 +664,4 @@
 int  VBOXCALL   supdrvOSEnableVTx(bool fEnabled);
 
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
-
 /**
  * Try open the image using the native loader.
@@ -717,5 +713,4 @@
 void VBOXCALL   supdrvOSLdrUnload(PSUPDRVDEVEXT pDevExt, PSUPDRVLDRIMAGE pImage);
 
-#endif /* VBOX_WITH_NATIVE_R0_LOADER */
 
 /*******************************************************************************
Index: /trunk/src/VBox/HostDrivers/Support/SUPLib.cpp
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/SUPLib.cpp	(revision 25277)
+++ /trunk/src/VBox/HostDrivers/Support/SUPLib.cpp	(revision 25278)
@@ -272,13 +272,7 @@
         strcpy(CookieReq.u.In.szMagic, SUPCOOKIE_MAGIC);
         CookieReq.u.In.u32ReqVersion = SUPDRV_IOC_VERSION;
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
         const uint32_t uMinVersion = (SUPDRV_IOC_VERSION & 0xffff0000) == 0x00120000
                                    ?  0x00120000
                                    :  SUPDRV_IOC_VERSION & 0xffff0000;
-#else
-       const uint32_t uMinVersion = (SUPDRV_IOC_VERSION & 0xffff0000) == 0x00100001
-                                       ?  0x00100001
-                                   :  SUPDRV_IOC_VERSION & 0xffff0000;
-#endif
         CookieReq.u.In.u32MinVersion = uMinVersion;
         rc = suplibOsIOCtl(&g_supLibData, SUP_IOCTL_COOKIE, &CookieReq, SUP_IOCTL_COOKIE_SIZE);
@@ -1498,9 +1492,5 @@
     if (    pszModule
         &&  *pszModule
-#if defined(VBOX_WITH_NATIVE_R0_LOADER) && defined(RT_OS_WINDOWS)
         &&  strcmp(pszModule, "VBoxDrv.sys")
-#else
-        &&  strcmp(pszModule, "SUPR0.dll")
-#endif
         &&  strcmp(pszModule, "VMMR0.r0"))
     {
@@ -1521,4 +1511,5 @@
      * Lookup symbol.
      */
+    /** @todo is this actually used??? */
     /* skip the 64-bit ELF import prefix first. */
     if (!strncmp(pszSymbol, "SUPR0$", sizeof("SUPR0$") - 1))
@@ -1556,9 +1547,9 @@
      * The GIP.
      */
-    /** @todo R0 mapping? */
     if (    pszSymbol
         &&  g_pSUPGlobalInfoPage
         &&  g_pSUPGlobalInfoPageR0
-        &&  !strcmp(pszSymbol, "g_SUPGlobalInfoPage"))
+        &&  !strcmp(pszSymbol, "g_SUPGlobalInfoPage")
+       )
     {
         *pValue = (uintptr_t)g_pSUPGlobalInfoPageR0;
@@ -1663,5 +1654,4 @@
     AssertPtrReturn(ppvImageBase, VERR_INVALID_PARAMETER);
     AssertReturn(strlen(pszModule) < RT_SIZEOFMEMB(SUPLDROPEN, u.In.szName), VERR_FILENAME_TOO_LONG);
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
     char szAbsFilename[RT_SIZEOFMEMB(SUPLDROPEN, u.In.szFilename)];
     rc = RTPathAbs(pszFilename, szAbsFilename, sizeof(szAbsFilename));
@@ -1669,5 +1659,4 @@
         return rc;
     pszFilename = szAbsFilename;
-#endif
 
     const bool fIsVMMR0 = !strcmp(pszModule, "VMMR0.r0");
@@ -1705,11 +1694,7 @@
         OpenReq.Hdr.rc = VERR_INTERNAL_ERROR;
         OpenReq.u.In.cbImageWithTabs = cbImageWithTabs;
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
         OpenReq.u.In.cbImageBits = (uint32_t)CalcArgs.cbImage;
-#endif
         strcpy(OpenReq.u.In.szName, pszModule);
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
         strcpy(OpenReq.u.In.szFilename, pszFilename);
-#endif
         if (!g_u32FakeMode)
         {
@@ -1820,7 +1805,5 @@
                             pLoadReq->u.In.cbStrTab                   = (uint32_t)CalcArgs.cbStrings;
                             AssertRelease(pLoadReq->u.In.cbStrTab == CalcArgs.cbStrings);
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
                             pLoadReq->u.In.cbImageBits                = (uint32_t)CalcArgs.cbImage;
-#endif
                             pLoadReq->u.In.offSymbols                 = offSymTab;
                             pLoadReq->u.In.cSymbols                   = CalcArgs.cSymbols;
@@ -1839,6 +1822,7 @@
                                )
                             {
-                                LogRel(("SUP: Loaded %s (%s) at %#p - ModuleInit at %RTptr and ModuleTerm at %RTptr\n", pszModule, pszFilename,
-                                        OpenReq.u.Out.pvImageBase, ModuleInit, ModuleTerm));
+                                LogRel(("SUP: Loaded %s (%s) at %#p - ModuleInit at %RTptr and ModuleTerm at %RTptr%s\n",
+                                        pszModule, pszFilename, OpenReq.u.Out.pvImageBase, ModuleInit, ModuleTerm,
+                                        OpenReq.u.Out.fNativeLoader ? " using the native ring-0 loader" : ""));
                                 if (fIsVMMR0)
                                 {
@@ -1870,5 +1854,6 @@
             if (fIsVMMR0)
                 g_pvVMMR0 = OpenReq.u.Out.pvImageBase;
-            LogRel(("SUP: Opened %s (%s) at %#p.\n", pszModule, pszFilename, OpenReq.u.Out.pvImageBase));
+            LogRel(("SUP: Opened %s (%s) at %#p.\n", pszModule, pszFilename, OpenReq.u.Out.pvImageBase,
+                    OpenReq.u.Out.fNativeLoader ? " loaded by the native ring-0 loader" : ""));
 #ifdef RT_OS_WINDOWS
             LogRel(("SUP: windbg> .reload /f %s=%#p\n", pszFilename, OpenReq.u.Out.pvImageBase));
Index: /trunk/src/VBox/HostDrivers/Support/SUPR0.def
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/SUPR0.def	(revision 25277)
+++ /trunk/src/VBox/HostDrivers/Support/SUPR0.def	(revision 25278)
@@ -1,9 +1,9 @@
 ; $Id$
 ;; @file
-; VirtualBox Support Driver - Built-in exports.
+; VirtualBox Support Driver - Exports.
 ;
 
 ;
-; Copyright (C) 2006-2007 Sun Microsystems, Inc.
+; Copyright (C) 2006-2009 Sun Microsystems, Inc.
 ;
 ; This file is part of VirtualBox Open Source Edition (OSE), as
@@ -29,6 +29,5 @@
 ;
 
-LIBRARY SUPR0.dll
-;LIBRARY VBoxDrv.sys ;- @todo VBOX_WITH_NATIVE_R0_LOADER
+LIBRARY VBoxDrv.sys
 
 EXPORTS
@@ -154,4 +153,4 @@
 
     ; data
-    g_SUPGlobalInfoPage DATA
+    g_pSUPGlobalInfoPage DATA
 
Index: /trunk/src/VBox/HostDrivers/Support/darwin/SUPDrv-darwin.cpp
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/darwin/SUPDrv-darwin.cpp	(revision 25277)
+++ /trunk/src/VBox/HostDrivers/Support/darwin/SUPDrv-darwin.cpp	(revision 25278)
@@ -759,5 +759,4 @@
 }
 
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
 
 int  VBOXCALL   supdrvOSLdrOpen(PSUPDRVDEVEXT pDevExt, PSUPDRVLDRIMAGE pImage, const char *pszFilename)
@@ -787,5 +786,4 @@
 }
 
-#endif /* VBOX_WITH_NATIVE_R0_LOADER */
 
 /**
Index: /trunk/src/VBox/HostDrivers/Support/freebsd/SUPDrv-freebsd.c
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/freebsd/SUPDrv-freebsd.c	(revision 25277)
+++ /trunk/src/VBox/HostDrivers/Support/freebsd/SUPDrv-freebsd.c	(revision 25278)
@@ -600,5 +600,4 @@
 }
 
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
 
 int  VBOXCALL   supdrvOSLdrOpen(PSUPDRVDEVEXT pDevExt, PSUPDRVLDRIMAGE pImage, const char *pszFilename)
@@ -628,5 +627,4 @@
 }
 
-#endif /* VBOX_WITH_NATIVE_R0_LOADER */
 
 SUPR0DECL(int) SUPR0Printf(const char *pszFormat, ...)
Index: /trunk/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c	(revision 25277)
+++ /trunk/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c	(revision 25278)
@@ -1006,5 +1006,4 @@
 }
 
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
 
 int  VBOXCALL   supdrvOSLdrOpen(PSUPDRVDEVEXT pDevExt, PSUPDRVLDRIMAGE pImage, const char *pszFilename)
@@ -1034,5 +1033,4 @@
 }
 
-#endif /* VBOX_WITH_NATIVE_R0_LOADER */
 
 /**
Index: /trunk/src/VBox/HostDrivers/Support/os2/SUPDrv-os2.cpp
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/os2/SUPDrv-os2.cpp	(revision 25277)
+++ /trunk/src/VBox/HostDrivers/Support/os2/SUPDrv-os2.cpp	(revision 25278)
@@ -382,5 +382,4 @@
 }
 
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
 
 int  VBOXCALL   supdrvOSLdrOpen(PSUPDRVDEVEXT pDevExt, PSUPDRVLDRIMAGE pImage, const char *pszFilename)
@@ -410,5 +409,4 @@
 }
 
-#endif /* VBOX_WITH_NATIVE_R0_LOADER */
 
 /**
Index: /trunk/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c	(revision 25277)
+++ /trunk/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c	(revision 25278)
@@ -897,5 +897,4 @@
 }
 
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
 
 int  VBOXCALL   supdrvOSLdrOpen(PSUPDRVDEVEXT pDevExt, PSUPDRVLDRIMAGE pImage, const char *pszFilename)
@@ -927,5 +926,4 @@
 }
 
-#endif /* VBOX_WITH_NATIVE_R0_LOADER */
 
 RTDECL(int) SUPR0Printf(const char *pszFormat, ...)
Index: /trunk/src/VBox/HostDrivers/Support/win/SUPDrv-win.cpp
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/win/SUPDrv-win.cpp	(revision 25277)
+++ /trunk/src/VBox/HostDrivers/Support/win/SUPDrv-win.cpp	(revision 25278)
@@ -594,5 +594,4 @@
 }
 
-#ifdef VBOX_WITH_NATIVE_R0_LOADER
 
 #define MY_SystemLoadGdiDriverInformation               26
@@ -614,4 +613,5 @@
 int  VBOXCALL   supdrvOSLdrOpen(PSUPDRVDEVEXT pDevExt, PSUPDRVLDRIMAGE pImage, const char *pszFilename)
 {
+#if 0
     MYSYSTEMGDIDRIVERINFO Info;
 
@@ -657,4 +657,8 @@
     pImage->pvNtSectionObj = NULL;
     return VERR_INTERNAL_ERROR_5; /** @todo convert status, making sure it isn't NOT_SUPPORTED. */
+#else
+    NOREF(pDevExt); NOREF(pszFilename); NOREF(pImage);
+    return VERR_NOT_SUPPORTED;
+#endif
 }
 
@@ -689,5 +693,4 @@
 }
 
-#endif /* VBOX_WITH_NATIVE_R0_LOADER */
 
 /**
