Skip to content

Commit

Permalink
Fix compilation error
Browse files Browse the repository at this point in the history
  • Loading branch information
alfred2g committed Feb 23, 2024
1 parent 15a2534 commit fb0daa9
Showing 1 changed file with 18 additions and 5 deletions.
23 changes: 18 additions & 5 deletions include/aws/common/atomics_msvc.inl
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

AWS_EXTERN_C_BEGIN

#if !(defined(_M_IX86) || defined(_M_X64))
#if !(defined(_M_IX86) || defined(_M_X64) || defined(_M_ARM64))
# error Atomics are not currently supported for non-x86 MSVC platforms

/*
Expand Down Expand Up @@ -71,8 +71,20 @@ typedef long aws_atomic_impl_int_t;
typedef long long aws_atomic_impl_int_t;
#endif

#ifdef _M_ARM64
# define RW_BARRIER() __dmb(_ARM64_BARRIER_SY)
# define R_BARRIER() __dmb(_ARM64_BARRIER_ST)
# define w_BARRIER() __dmb(_ARM64_BARRIER_LD)
# define SW_BARRIER() _ReadWriteBarrier();
#else
# define RW_BARRIER() _ReadWriteBarrier();
# define R_BARRIER()
# define w_BARRIER()
# define SW_BARRIER()
#endif

static inline void aws_atomic_priv_check_order(enum aws_memory_order order) {
#ifndef NDEBUG
EAfndef NDEBUG
switch (order) {
case aws_memory_order_relaxed:
return;
Expand Down Expand Up @@ -114,7 +126,8 @@ static inline void aws_atomic_priv_barrier_before(enum aws_memory_order order, e
* Volatile ops may or may not imply this barrier, depending on the /volatile: switch, but adding an extra
* barrier doesn't hurt.
*/
_ReadWriteBarrier();
RW_BARRIER();
SW_BARRIER();
}

static inline void aws_atomic_priv_barrier_after(enum aws_memory_order order, enum aws_atomic_mode_priv mode) {
Expand All @@ -135,7 +148,7 @@ static inline void aws_atomic_priv_barrier_after(enum aws_memory_order order, en
* x86: only a compiler barrier is required. For seq_cst, we must use some form of interlocked operation for
* writes, but that's the caller's responsibility.
*/
_ReadWriteBarrier();
SW_BARRIER();
}

/**
Expand Down Expand Up @@ -346,7 +359,7 @@ void aws_atomic_thread_fence(enum aws_memory_order order) {
case aws_memory_order_release:
case aws_memory_order_acquire:
case aws_memory_order_acq_rel:
_ReadWriteBarrier();
RW_BARRIER();
break;
case aws_memory_order_relaxed:
/* no-op */
Expand Down

0 comments on commit fb0daa9

Please sign in to comment.