| / | 
 | / Copyright (C) Igor Sysoev | 
 | / Copyright (C) Nginx, Inc. | 
 | / | 
 |  | 
 | / 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 on stack (%esp), 4(%esp), 8(%esp) | 
 |  | 
 |         .inline ngx_atomic_cmp_set,0 | 
 |         movl      (%esp), %ecx | 
 |         movl      4(%esp), %eax | 
 |         movl      8(%esp), %edx | 
 |         lock | 
 |         cmpxchgl  %edx, (%ecx) | 
 |         setz      %al | 
 |         movzbl    %al, %eax | 
 |         .end | 
 |  | 
 |  | 
 | / ngx_atomic_int_t ngx_atomic_fetch_add(ngx_atomic_t *value, | 
 | /     ngx_atomic_int_t add); | 
 | / | 
 | / the arguments are passed on stack (%esp), 4(%esp) | 
 |  | 
 |         .inline ngx_atomic_fetch_add,0 | 
 |         movl      (%esp), %ecx | 
 |         movl      4(%esp), %eax | 
 |         lock | 
 |         xaddl     %eax, (%ecx) | 
 |         .end | 
 |  | 
 |  | 
 | / ngx_cpu_pause() | 
 | / | 
 | / the "rep; nop" is used instead of "pause" to avoid the "[ PAUSE ]" hardware | 
 | / capability added by linker because Solaris/i386 does not know about it: | 
 | / | 
 | / ld.so.1: nginx: fatal: hardware capability unsupported: 0x2000  [ PAUSE ] | 
 |  | 
 |        .inline ngx_cpu_pause,0 | 
 |        rep; nop | 
 |        .end |