- The DDK disables usage of _enable/_disable so that driver devs don't use them. Since the NDK is the home of undocumented things that drivers shouldn't use, including halfuncs.h will re-enable the intrinsics.
- Add the intrinsics to the w32api as well so that code which uses them can compile on both msvc and gcc.
- Make DPRINT work on non-DBG msvc builds.
Modified: trunk/reactos/include/ndk/halfuncs.h
Modified: trunk/reactos/include/reactos/debug.h
Modified: trunk/reactos/w32api/include/ddk/winddk.h

Modified: trunk/reactos/include/ndk/halfuncs.h
--- trunk/reactos/include/ndk/halfuncs.h	2006-01-07 01:39:56 UTC (rev 20641)
+++ trunk/reactos/include/ndk/halfuncs.h	2006-01-07 02:06:22 UTC (rev 20642)
@@ -28,6 +28,22 @@
 #ifndef NTOS_MODE_USER
 
 //
+// The DDK steals these away from you.
+//
+VOID
+_enable(
+    VOID
+);
+VOID
+_disable(
+    VOID
+);
+#ifdef _MSC_VER
+#pragma intrinsic(_enable)
+#pragma intrinsic(_disable)
+#endif
+
+//
 // Display Functions
 //
 NTHALAPI

Modified: trunk/reactos/include/reactos/debug.h
--- trunk/reactos/include/reactos/debug.h	2006-01-07 01:39:56 UTC (rev 20641)
+++ trunk/reactos/include/reactos/debug.h	2006-01-07 02:06:22 UTC (rev 20642)
@@ -82,7 +82,12 @@
         #define CHECKPOINT do { DbgPrint("%s:%d\n",__FILE__,__LINE__); } while(0);
     
     #else
-        #ifdef __GNUC__
+        #ifdef _MSC_VER
+            static __inline void DPRINT ( const char* fmt, ... )
+            {
+                UNREFERENCED_PARAMETER(fmt);
+            }
+        #else
             #define DPRINT(...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0)
         #endif
         #define CHECKPOINT
@@ -94,17 +99,18 @@
 #else
 
     /* On non-debug builds, we never show these */
-#ifdef _MSC_VER
-static __inline void DPRINT1 ( const char* fmt, ... )
-{
-}
-static __inline void DPRINT ( const char* fmt, ... )
-{
-}
-#else
-    #define DPRINT1(...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0)
-    #define DPRINT(...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0)
-#endif
+    #ifdef _MSC_VER
+        static __inline void DPRINT1 ( const char* fmt, ... )
+        {
+        }
+        static __inline void DPRINT ( const char* fmt, ... )
+        {
+        }
+    #else
+        #define DPRINT1(...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0)
+        #define DPRINT(...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0)
+    #endif
+
     #define CHECKPOINT1
     #define CHECKPOINT
     #define UNIMPLEMENTED

Modified: trunk/reactos/w32api/include/ddk/winddk.h
--- trunk/reactos/w32api/include/ddk/winddk.h	2006-01-07 01:39:56 UTC (rev 20641)
+++ trunk/reactos/w32api/include/ddk/winddk.h	2006-01-07 02:06:22 UTC (rev 20642)
@@ -10270,6 +10270,10 @@
 
 #endif
 
+/* Available as intrinsics on MSVC */
+static __inline void _disable(void) {__asm__("cli\n\t");}
+static __inline void _enable(void)  {__asm__("sti\n\t");}
+
 #ifdef __cplusplus
 }
 #endif