From e5e6a33128cacd87f626f2beabc2dd6c82822a62 Mon Sep 17 00:00:00 2001 From: Danny Smith Date: Tue, 24 Jan 2006 01:02:31 +0000 Subject: 2006-01-24 Danny Smith * include/ddk/winddk.h (KeGetCurrentKPCR): Support -masm=intel. 2006-01-24 Jiri Malak 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/include/ddk/ntddk.h | 4 ++-- winsup/w32api/include/ddk/winddk.h | 28 ++++++++++++++++++++++------ 2 files changed, 24 insertions(+), 8 deletions(-) (limited to 'winsup/w32api/include') diff --git a/winsup/w32api/include/ddk/ntddk.h b/winsup/w32api/include/ddk/ntddk.h index fd78905fd..60a99ef37 100644 --- a/winsup/w32api/include/ddk/ntddk.h +++ b/winsup/w32api/include/ddk/ntddk.h @@ -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 */ 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 */ -- cgit v1.2.3