|
@@ -80,7 +80,7 @@ static __inline__ int CRYPTO_DOWN_REF(int *val, int *ret, void *lock)
|
|
|
|
|
|
typedef volatile int CRYPTO_REF_COUNT;
|
|
|
|
|
|
-# if (defined(_M_ARM) && _M_ARM>=7) || defined(_M_ARM64)
|
|
|
+# if (defined(_M_ARM) && _M_ARM>=7 && !defined(_WIN32_WCE)) || defined(_M_ARM64)
|
|
|
# include <intrin.h>
|
|
|
# if defined(_M_ARM64) && !defined(_ARM_BARRIER_ISH)
|
|
|
# define _ARM_BARRIER_ISH _ARM64_BARRIER_ISH
|
|
@@ -100,7 +100,17 @@ static __inline int CRYPTO_DOWN_REF(volatile int *val, int *ret, void *lock)
|
|
|
return 1;
|
|
|
}
|
|
|
# else
|
|
|
-# pragma intrinsic(_InterlockedExchangeAdd)
|
|
|
+# if !defined(_WIN32_WCE)
|
|
|
+# pragma intrinsic(_InterlockedExchangeAdd)
|
|
|
+# else
|
|
|
+# if _WIN32_WCE >= 0x600
|
|
|
+ extern long __cdecl _InterlockedExchangeAdd(long volatile*, long);
|
|
|
+# else
|
|
|
+ // under Windows CE we still have old-style Interlocked* functions
|
|
|
+ extern long __cdecl InterlockedExchangeAdd(long volatile*, long);
|
|
|
+# define _InterlockedExchangeAdd InterlockedExchangeAdd
|
|
|
+# endif
|
|
|
+# endif
|
|
|
|
|
|
static __inline int CRYPTO_UP_REF(volatile int *val, int *ret, void *lock)
|
|
|
{
|