wolfssl/wolfcrypt/wc_port.h: use non-asm implementation of XFENCE when available.

This commit is contained in:
Daniel Pouzzner
2024-08-27 13:36:21 -05:00
parent e164bcb24d
commit 349e06ab4a

View File

@@ -1264,7 +1264,11 @@ WOLFSSL_ABI WOLFSSL_API int wolfCrypt_Cleanup(void);
#endif #endif
#ifndef WOLFSSL_NO_FENCE #ifndef WOLFSSL_NO_FENCE
#if defined (__i386__) || defined(__x86_64__) #ifdef XFENCE
/* use user-supplied XFENCE definition. */
#elif defined(__GNUC__) && (__GNUC__ >= 4)
#define XFENCE() __sync_synchronize()
#elif defined (__i386__) || defined(__x86_64__)
#define XFENCE() XASM_VOLATILE("lfence") #define XFENCE() XASM_VOLATILE("lfence")
#elif (defined (__arm__) && (__ARM_ARCH > 6)) || defined(__aarch64__) #elif (defined (__arm__) && (__ARM_ARCH > 6)) || defined(__aarch64__)
#define XFENCE() XASM_VOLATILE("isb") #define XFENCE() XASM_VOLATILE("isb")
@@ -1273,10 +1277,10 @@ WOLFSSL_ABI WOLFSSL_API int wolfCrypt_Cleanup(void);
#elif defined(__PPC__) #elif defined(__PPC__)
#define XFENCE() XASM_VOLATILE("isync; sync") #define XFENCE() XASM_VOLATILE("isync; sync")
#else #else
#define XFENCE() do{}while(0) #define XFENCE() WC_DO_NOTHING
#endif #endif
#else #else
#define XFENCE() do{}while(0) #define XFENCE() WC_DO_NOTHING
#endif #endif