1
0
mirror of https://github.com/postgres/postgres.git synced 2025-05-03 22:24:49 +03:00

For ppc gcc, implement 64-bit compare_exchange and fetch_add with asm.

While xlc defines __64BIT__, gcc does not.  Due to this oversight in
commit 30ee5d17c20dbb282a9952b3048d6ad52d56c371, gcc builds continued
implementing 64-bit atomics by way of intrinsics.  Back-patch to v13,
where that commit first appeared.

Reviewed by Tom Lane.

Discussion: https://postgr.es/m/20201011051043.GA1724101@rfd.leadboat.com
This commit is contained in:
Noah Misch 2020-10-11 21:31:37 -07:00
parent dc14aa038e
commit d41cb63ff4

View File

@ -32,14 +32,14 @@ typedef struct pg_atomic_uint32
} pg_atomic_uint32; } pg_atomic_uint32;
/* 64bit atomics are only supported in 64bit mode */ /* 64bit atomics are only supported in 64bit mode */
#ifdef __64BIT__ #if SIZEOF_VOID_P >= 8
#define PG_HAVE_ATOMIC_U64_SUPPORT #define PG_HAVE_ATOMIC_U64_SUPPORT
typedef struct pg_atomic_uint64 typedef struct pg_atomic_uint64
{ {
volatile uint64 value pg_attribute_aligned(8); volatile uint64 value pg_attribute_aligned(8);
} pg_atomic_uint64; } pg_atomic_uint64;
#endif /* __64BIT__ */ #endif
/* /*
* This mimics gcc __atomic_compare_exchange_n(..., __ATOMIC_SEQ_CST), but * This mimics gcc __atomic_compare_exchange_n(..., __ATOMIC_SEQ_CST), but