aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic/arch/aarch64
diff options
context:
space:
mode:
authorMatias Elo <matias.elo@nokia.com>2021-10-12 12:21:22 +0300
committerPetri Savolainen <petri.savolainen@nokia.com>2021-10-21 10:53:20 +0300
commit28912cee034067ad15914a0caec3e3067b04284e (patch)
tree5602873970f47aaac56331b69a6a7a0f93a386be /platform/linux-generic/arch/aarch64
parent42d0383b7346b787995275d67b469135489add15 (diff)
linux-gen: fix unsupported types build errors
Fix "ISO C does not support '__int128' types" errors when building with 'pedantic' option. Signed-off-by: Matias Elo <matias.elo@nokia.com> Reviewed-by: Petri Savolainen <petri.savolainen@nokia.com>
Diffstat (limited to 'platform/linux-generic/arch/aarch64')
-rw-r--r--platform/linux-generic/arch/aarch64/odp_atomic.h8
-rw-r--r--platform/linux-generic/arch/aarch64/odp_llsc.h6
2 files changed, 10 insertions, 4 deletions
diff --git a/platform/linux-generic/arch/aarch64/odp_atomic.h b/platform/linux-generic/arch/aarch64/odp_atomic.h
index c7a28fc2c..445d91e28 100644
--- a/platform/linux-generic/arch/aarch64/odp_atomic.h
+++ b/platform/linux-generic/arch/aarch64/odp_atomic.h
@@ -36,6 +36,10 @@ do { \
#define LL_MO(mo) (HAS_ACQ((mo)) ? __ATOMIC_ACQUIRE : __ATOMIC_RELAXED)
#define SC_MO(mo) (HAS_RLS((mo)) ? __ATOMIC_RELEASE : __ATOMIC_RELAXED)
+/* Prevent warnings about ISO C not supporting __int128 */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic"
+
#ifndef __ARM_FEATURE_QRDMX /* Feature only available in v8.1a and beyond */
static inline bool
__lockfree_compare_exchange_16(register __int128 *var, __int128 *exp,
@@ -219,7 +223,7 @@ static inline __int128 __lockfree_load_16(__int128 *var, int mo)
return old;
}
-typedef unsigned __int128 _u128_t;
+__extension__ typedef unsigned __int128 _u128_t;
static inline _u128_t lockfree_load_u128(_u128_t *atomic)
{
@@ -291,6 +295,8 @@ static inline bitset_t bitset_mask(uint32_t bit)
return (unsigned __int128)(1ULL << (bit - 64)) << 64;
}
+#pragma GCC diagnostic pop
+
#else
#error Unsupported size of bit sets (ATOM_BITSET_SIZE)
#endif
diff --git a/platform/linux-generic/arch/aarch64/odp_llsc.h b/platform/linux-generic/arch/aarch64/odp_llsc.h
index cf55be132..45a534100 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,7 +139,7 @@ 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;