diff options
Diffstat (limited to 'platform/linux-generic/arch/aarch64/odp_llsc.h')
-rw-r--r-- | platform/linux-generic/arch/aarch64/odp_llsc.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/platform/linux-generic/arch/aarch64/odp_llsc.h b/platform/linux-generic/arch/aarch64/odp_llsc.h index cf55be132..2561451ca 100644 --- a/platform/linux-generic/arch/aarch64/odp_llsc.h +++ b/platform/linux-generic/arch/aarch64/odp_llsc.h @@ -115,11 +115,11 @@ static inline uint32_t sc(uint64_t *var, uint64_t neu, int mm) #define sc64(a, b, c) sc((a), (b), (c)) union i128 { - __int128 i128; + __extension__ __int128 i128; int64_t i64[2]; }; -static inline __int128 lld(__int128 *var, int mm) +__extension__ static inline __int128 lld(__int128 *var, int mm) { union i128 old; @@ -139,10 +139,12 @@ static inline __int128 lld(__int128 *var, int mm) } /* Return 0 on success, 1 on failure */ -static inline uint32_t scd(__int128 *var, __int128 neu, int mm) +__extension__ static inline uint32_t scd(__int128 *var, __int128 neu, int mm) { uint32_t ret; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" if (mm == __ATOMIC_RELEASE) __asm__ volatile("stlxp %w0, %1, %2, [%3]" : "=&r" (ret) @@ -159,6 +161,7 @@ static inline uint32_t scd(__int128 *var, __int128 neu, int mm) : ); else ODP_ABORT(); +#pragma GCC diagnostic pop return ret; } |