diff options
author | Danny Smith <dannysmith@users.sourceforge.net> | 2006-01-24 01:02:31 +0000 |
---|---|---|
committer | Danny Smith <dannysmith@users.sourceforge.net> | 2006-01-24 01:02:31 +0000 |
commit | e5e6a33128cacd87f626f2beabc2dd6c82822a62 (patch) | |
tree | 4e6cf1f58034d992ce468689c0c788a9f92081cd /winsup/w32api/include/ddk/winddk.h | |
parent | 543c43d84de8ba2bf09cc733cde4e332441184a6 (diff) | |
download | cygnal-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.h | 28 |
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 */ |