summaryrefslogtreecommitdiffstats
path: root/winsup/w32api/include/ddk/winddk.h
diff options
context:
space:
mode:
authorDanny Smith <dannysmith@users.sourceforge.net>2006-01-24 01:02:31 +0000
committerDanny Smith <dannysmith@users.sourceforge.net>2006-01-24 01:02:31 +0000
commite5e6a33128cacd87f626f2beabc2dd6c82822a62 (patch)
tree4e6cf1f58034d992ce468689c0c788a9f92081cd /winsup/w32api/include/ddk/winddk.h
parent543c43d84de8ba2bf09cc733cde4e332441184a6 (diff)
downloadcygnal-e5e6a33128cacd87f626f2beabc2dd6c82822a62.tar.gz
cygnal-e5e6a33128cacd87f626f2beabc2dd6c82822a62.tar.bz2
cygnal-e5e6a33128cacd87f626f2beabc2dd6c82822a62.zip
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.
Diffstat (limited to 'winsup/w32api/include/ddk/winddk.h')
-rw-r--r--winsup/w32api/include/ddk/winddk.h28
1 files changed, 22 insertions, 6 deletions
diff --git a/winsup/w32api/include/ddk/winddk.h b/winsup/w32api/include/ddk/winddk.h
index 6631f36e3..123a44a73 100644
--- a/winsup/w32api/include/ddk/winddk.h
+++ b/winsup/w32api/include/ddk/winddk.h
@@ -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
*/