blob: b82a2267b7072e835b6c528e1de33ee4fa5470ca [file] [log] [blame]
/
/ 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 on the 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 the 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()
.inline ngx_cpu_pause,0
pause
.end