3 * Copyright (C) Igor Sysoev
4 * Copyright (C) Nginx, Inc.
8 #if (NGX_PTR_SIZE == 4)
9 #define NGX_CASA ngx_casa
11 #define NGX_CASA ngx_casxa
16 ngx_casa(ngx_atomic_uint_t set
, ngx_atomic_uint_t old
, ngx_atomic_t
*lock
);
19 ngx_casxa(ngx_atomic_uint_t set
, ngx_atomic_uint_t old
, ngx_atomic_t
*lock
);
21 /* the code in src/os/unix/ngx_sunpro_sparc64.il */
24 static ngx_inline ngx_atomic_uint_t
25 ngx_atomic_cmp_set(ngx_atomic_t
*lock
, ngx_atomic_uint_t old
,
26 ngx_atomic_uint_t set
)
28 set
= NGX_CASA(set
, old
, lock
);
34 static ngx_inline ngx_atomic_int_t
35 ngx_atomic_fetch_add(ngx_atomic_t
*value
, ngx_atomic_int_t add
)
37 ngx_atomic_uint_t old
, res
;
45 res
= NGX_CASA(res
, old
, value
);
56 #define ngx_memory_barrier() \
57 __asm (".volatile"); \
58 __asm ("membar #LoadLoad | #LoadStore | #StoreStore | #StoreLoad"); \
59 __asm (".nonvolatile")
61 #define ngx_cpu_pause()