| / | 
 | / Copyright (C) Igor Sysoev | 
 | / | 
 |  | 
 | / ngx_atomic_uint_t ngx_atomic_cmp_set(ngx_atomic_t *lock, | 
 | /     ngx_atomic_uint_t old, ngx_atomic_uint_t set); | 
 | / | 
 | / the arguments are passed in %rdi, %rsi, %rdx | 
 | / the result is returned in the %rax | 
 |  | 
 |         .inline ngx_atomic_cmp_set,0 | 
 |         movq      %rsi, %rax | 
 |         lock | 
 |         cmpxchgq  %rdx, (%rdi) | 
 |         setz      %al | 
 |         movzbq    %al, %rax | 
 |         .end | 
 |  | 
 |  | 
 | / ngx_atomic_int_t ngx_atomic_fetch_add(ngx_atomic_t *value, | 
 | /     ngx_atomic_int_t add); | 
 | / | 
 | / the arguments are passed in %rdi, %rsi | 
 | / the result is returned in the %rax | 
 |  | 
 |         .inline ngx_atomic_fetch_add,0 | 
 |         movq      %rsi, %rax | 
 |         lock | 
 |         xaddq     %rax, (%rdi) | 
 |         .end | 
 |  | 
 |  | 
 | / ngx_cpu_pause() | 
 |  | 
 |        .inline ngx_cpu_pause,0 | 
 |        pause | 
 |        .end |