File tree 1 file changed +3
-2
lines changed
1 file changed +3
-2
lines changed Original file line number Diff line number Diff line change @@ -94,15 +94,16 @@ typedef struct rcu_cb_item *prcu_cb_item;
94
94
95
95
# if defined(__GNUC__ ) && defined(__ATOMIC_ACQUIRE ) && !defined(BROKEN_CLANG_ATOMICS ) \
96
96
&& !defined(USE_ATOMIC_FALLBACKS )
97
- # if defined(__APPLE__ ) && defined(__clang__ ) && defined(__aarch64__ )
97
+ # if defined(__APPLE__ ) && defined(__clang__ ) && defined(__aarch64__ ) && defined( __LP64__ )
98
98
/*
99
99
* For pointers, Apple M1 virtualized cpu seems to have some problem using the
100
100
* ldapr instruction (see https://github.com/openssl/openssl/pull/23974)
101
101
* When using the native apple clang compiler, this instruction is emitted for
102
102
* atomic loads, which is bad. So, if
103
103
* 1) We are building on a target that defines __APPLE__ AND
104
104
* 2) We are building on a target using clang (__clang__) AND
105
- * 3) We are building for an M1 processor (__aarch64__)
105
+ * 3) We are building for an M1 processor (__aarch64__) AND
106
+ * 4) We are building with 64 bit pointers
106
107
* Then we should not use __atomic_load_n and instead implement our own
107
108
* function to issue the ldar instruction instead, which produces the proper
108
109
* sequencing guarantees
You can’t perform that action at this time.
0 commit comments