From fa657e7e298d02845c62406293411b9fdb6f6ae0 Mon Sep 17 00:00:00 2001 From: Stefan Ginsberg Date: Sat, 8 Aug 2009 18:27:01 +0000 Subject: [PATCH] Fix Uniata for msvc: - Add missing msvc intrinsics to winddk.h - Don't assume compiler means a specific header set, and don't rely on the default calling convention being stdcall. - Disable a warning spotted by MSVC -- requesting anyone with understanding of the code to have a look. svn path=/trunk/; revision=42531 --- reactos/drivers/storage/ide/uniata/config.h | 34 +++---------------- .../drivers/storage/ide/uniata/id_sata.cpp | 8 +++++ reactos/drivers/storage/ide/uniata/ntddk_ex.h | 3 ++ reactos/include/ddk/winddk.h | 27 ++++++++++----- 4 files changed, 33 insertions(+), 39 deletions(-) diff --git a/reactos/drivers/storage/ide/uniata/config.h b/reactos/drivers/storage/ide/uniata/config.h index 17768e42a20..e17416f1367 100644 --- a/reactos/drivers/storage/ide/uniata/config.h +++ b/reactos/drivers/storage/ide/uniata/config.h @@ -86,47 +86,21 @@ /* Compiler dependencies */ /***************************************************/ -/* ReactOS-specific defines */ -#ifdef DDKAPI - #define USE_REACTOS_DDK -#endif //DDKAPI +#define DDKAPI __stdcall +#define DDKFASTAPI __fastcall +#define DDKCDECLAPI __cdecl /* Are we under GNU C (mingw) ??? */ -#if __GNUC__ >=3 +#ifdef __GNUC__ #define DEF_U64(x) (x##ULL) #define DEF_I64(x) (x##LL) - /* ReactOS-specific defines */ - #ifdef USE_REACTOS_DDK - #define DDKFASTAPI __attribute__((fastcall)) - #else //USE_REACTOS_DDK - - #define DDKAPI __attribute__((stdcall)) - #define DDKFASTAPI __attribute__((fastcall)) - #define DDKCDECLAPI __attribute__((cdecl)) - - #endif //DDKAPI - - #define DECLSPEC_NAKED __attribute__((naked)) - #else // !__GNUC__ => MSVC/Intel #define DEF_U64(x) (x##UI64) #define DEF_I64(x) (x##I64) - /* ReactOS-specific defines */ - #ifdef USE_REACTOS_DDK - #else //USE_REACTOS_DDK - - #define DDKAPI __stdcall - #define DDKFASTAPI __fastcall - #define DDKCDECLAPI _cdecl - - #endif //DDKAPI - - #define DECLSPEC_NAKED __declspec(naked) - #endif //__GNUC__ diff --git a/reactos/drivers/storage/ide/uniata/id_sata.cpp b/reactos/drivers/storage/ide/uniata/id_sata.cpp index 277b37b8c23..9b0d1e08c2e 100644 --- a/reactos/drivers/storage/ide/uniata/id_sata.cpp +++ b/reactos/drivers/storage/ide/uniata/id_sata.cpp @@ -425,7 +425,15 @@ UniataAhciSetupFIS( deviceExtension->lun[ldev].IdentifyData.FeaturesSupport.Address48) { i++; } else { +#ifdef _MSC_VER +#pragma message ("HACK HACK HACK Disabling warning HACK HACK HACK") +#pragma warning(push) +#pragma warning(disable:4333) +#endif fis[7] |= (plba[3] >> 24) & 0x0f; +#ifdef _MSC_VER +#pragma warning(pop) +#endif } fis[8] = plba[3]; diff --git a/reactos/drivers/storage/ide/uniata/ntddk_ex.h b/reactos/drivers/storage/ide/uniata/ntddk_ex.h index c61de2b2540..221ba792316 100644 --- a/reactos/drivers/storage/ide/uniata/ntddk_ex.h +++ b/reactos/drivers/storage/ide/uniata/ntddk_ex.h @@ -629,12 +629,14 @@ typedef struct _IMAGE_EXPORT_DIRECTORY { NTHALAPI VOID +NTAPI HalDisplayString ( PUCHAR String ); NTHALAPI VOID +NTAPI HalQueryDisplayParameters ( OUT PULONG WidthInCharacters, OUT PULONG HeightInLines, @@ -644,6 +646,7 @@ HalQueryDisplayParameters ( NTHALAPI VOID +NTAPI HalSetDisplayParameters ( IN ULONG CursorColumn, IN ULONG CursorRow diff --git a/reactos/include/ddk/winddk.h b/reactos/include/ddk/winddk.h index 9807da94f45..edb671d49b4 100644 --- a/reactos/include/ddk/winddk.h +++ b/reactos/include/ddk/winddk.h @@ -35,6 +35,24 @@ extern "C" { #include "intrin.h" #endif +#ifdef _MSC_VER +// +// FIXME: MSVC Intrinsics +// +unsigned char __readfsbyte(const unsigned long Offset); +#pragma intrinsic(__readfsbyte) +long _InterlockedExchange(volatile long * const Target, const long Value); +#pragma intrinsic(_InterlockedExchange) +long _InterlockedExchangeAdd(volatile long * const Addend, const long Value); +#pragma intrinsic(_InterlockedExchangeAdd) +long _InterlockedCompareExchange(volatile long * const Destination, const long Exchange, const long Comperand); +#pragma intrinsic(_InterlockedCompareExchange) +long _InterlockedDecrement(volatile long * const lpAddend); +#pragma intrinsic(_InterlockedDecrement) +long _InterlockedIncrement(volatile long * const lpAddend); +#pragma intrinsic(_InterlockedIncrement) +#endif + #if !defined(_NTHAL_) #define NTHALAPI DECLSPEC_IMPORT #else @@ -5116,15 +5134,6 @@ typedef struct _KFLOATING_SAVE { ULONG Spare1; } KFLOATING_SAVE, *PKFLOATING_SAVE; -#ifdef _MSC_VER -// -// FIXME: Intrinsics -// -unsigned char __readfsbyte(const unsigned long Offset); -#pragma intrinsic(__readfsbyte) -#endif - - FORCEINLINE ULONG KeGetCurrentProcessorNumber(VOID)