mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-04-29 14:22:14 +03:00
Removed atomics and added guards for compilers
This commit is contained in:
parent
d1bb7c6ba7
commit
3ebca8b44f
3 changed files with 14 additions and 30 deletions
|
|
@ -12,7 +12,8 @@ typedef struct {
|
|||
|
||||
static inline void
|
||||
spin_cpu_spinwait(void) {
|
||||
# if defined(__linux__) && (defined(__aarch64__) || defined(__arm64__))
|
||||
# if defined(__linux__) && (defined(__aarch64__) || defined(__arm64__)) && \
|
||||
(defined(__GNUC__) || defined(__clang__))
|
||||
spin_delay_arm();
|
||||
# elif HAVE_CPU_SPINWAIT
|
||||
CPU_SPINWAIT;
|
||||
|
|
|
|||
|
|
@ -1,23 +1,13 @@
|
|||
#include "jemalloc/internal/jemalloc_preamble.h"
|
||||
#include <stdatomic.h>
|
||||
|
||||
/* Global variable to track SB support, declared as extern to be defined in one TU */
|
||||
extern _Atomic int arm_has_sb_instruction;
|
||||
|
||||
/* Constructor function declaration - implementation in spin_delay_arm.c */
|
||||
__attribute__((constructor))
|
||||
void detect_arm_sb_support(void);
|
||||
/* Global variable to track SB support */
|
||||
extern int arm_has_sb_instruction;
|
||||
|
||||
/* Use SB instruction if available, otherwise ISB */
|
||||
static inline void
|
||||
spin_delay_arm(void) {
|
||||
#ifdef HWCAP_SB
|
||||
static inline void spin_delay_arm(void) {
|
||||
if (__builtin_expect(arm_has_sb_instruction == 1, 1)) {
|
||||
/* SB instruction encoding */
|
||||
asm volatile(".inst 0xd50330ff \n");
|
||||
asm volatile(".inst 0xd50330ff \n"); /* SB instruction encoding */
|
||||
} else {
|
||||
/* ISB instruction */
|
||||
asm volatile("isb; \n");
|
||||
}
|
||||
#endif // HWCAP_SB
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue