OSDN Git Service

2006-01-24 Danny Smith <dannysmith@users.sourceforge.net>
authordannysmith <dannysmith>
Tue, 24 Jan 2006 01:02:31 +0000 (01:02 +0000)
committerdannysmith <dannysmith>
Tue, 24 Jan 2006 01:02:31 +0000 (01:02 +0000)
        * include/ddk/winddk.h (KeGetCurrentKPCR): Support -masm=intel.

2006-01-24  Jiri Malak  <Jiri.Malak@iol.cz>

WATCOM compatibility changes.
* include/ddk/ntddk.h (DECL_IMPORT): Define using __declspec,
rather than __attribute__.
(DECL_EXPORT): Likewise.
* include/ddk/winddk.h (DDKAPI): Avoid using __attribute__.
(DDKFASTAPI): Likewise.
(DDKCDECLAPI): Likwise.
(KeGetCurrentKPCR): Provide __WATCOMC__ syntax for inline code.

winsup/w32api/ChangeLog
winsup/w32api/include/ddk/ntddk.h
winsup/w32api/include/ddk/winddk.h

index b57686e..e199494 100644 (file)
@@ -1,3 +1,18 @@
+2006-01-24  Danny Smith  <dannysmith@users.sourceforge.net>
+
+        * include/ddk/winddk.h (KeGetCurrentKPCR): Support -masm=intel.
+
+2006-01-24  Jiri Malak  <Jiri.Malak@iol.cz>
+
+       WATCOM compatibility changes. 
+       * include/ddk/ntddk.h (DECL_IMPORT): Define using __declspec,
+       rather than __attribute__.
+       (DECL_EXPORT): Likewise.
+       * include/ddk/winddk.h (DDKAPI): Avoid using __attribute__.
+       (DDKFASTAPI): Likewise.
+       (DDKCDECLAPI): Likwise.
+       (KeGetCurrentKPCR): Provide __WATCOMC__ syntax for inline code.
+
 2006-01-23  Brandon Sneed  <brandon@redf.net>
 
        * setupapi.def: Add all CM_* functions defined in ddk/cfgmgr32.h
index fd78905..60a99ef 100644 (file)
@@ -59,11 +59,11 @@ typedef CONST char *PCSZ;
 #endif
 
 #ifndef DECL_IMPORT
-#define DECL_IMPORT __attribute__((dllimport))
+#define DECL_IMPORT __declspec(dllimport)
 #endif
 
 #ifndef DECL_EXPORT
-#define DECL_EXPORT __attribute__((dllexport))
+#define DECL_EXPORT __declspec(dllexport)
 #endif
 
 /* Windows NT status codes */
index 6631f36..123a44a 100644 (file)
@@ -34,9 +34,9 @@ extern "C" {
 /*
 ** Definitions specific to this Device Driver Kit
 */
-#define DDKAPI __attribute__((stdcall))
-#define DDKFASTAPI __attribute__((fastcall))
-#define DDKCDECLAPI __attribute__((cdecl))
+#define DDKAPI __stdcall
+#define DDKFASTAPI __fastcall
+#define DDKCDECLAPI __cdecl
 
 #if defined(_NTOSKRNL_)
 #ifndef NTOSAPI
@@ -114,18 +114,34 @@ typedef ULONG LOGICAL;
 #define TAG(_a, _b, _c, _d) (ULONG) \
        (((_a) << 0) + ((_b) << 8) + ((_c) << 16) + ((_d) << 24))
 
+#ifdef __GNUC__
 static __inline struct _KPCR * KeGetCurrentKPCR(
   VOID)
 {
   ULONG Value;
 
-  __asm__ __volatile__ ("movl %%fs:0x18, %0\n\t"
-         : "=r" (Value)
-    : /* no inputs */
+  __asm__ __volatile__ (
+#if (__GNUC__ >= 3)
+    /* support -masm=intel */
+    "mov{l} {%%fs:0x18, %0|%0, %%fs:0x18}\n\t"
+#else
+    "movl %%fs:0x18, %0\n\t"
+#endif
+     : "=r" (Value)
+     : /* no inputs */
   );
   return (struct _KPCR *) Value;
 }
 
+#elif defined( __WATCOMC__ )
+
+extern struct _KPCR * KeGetCurrentKPCR( void );
+#pragma aux KeGetCurrentKPCR = \
+  "mov eax, fs:[0x18]" \
+  value [ eax ];
+
+#endif
+
 /*
 ** Simple structures
 */