mirror of
https://github.com/nginx/nginx.git
synced 2025-01-07 09:07:47 +08:00
39 lines
839 B
Plaintext
39 lines
839 B
Plaintext
/
|
|
/ 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
|