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:
parent
dc14aa038e
commit
d41cb63ff4
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user