561
|
1 /
|
|
2 / Copyright (C) Igor Sysoev
|
|
3 /
|
|
4
|
|
5 / ngx_atomic_uint_t ngx_atomic_cmp_set(ngx_atomic_t *lock,
|
|
6 / ngx_atomic_uint_t old, ngx_atomic_uint_t set);
|
|
7 /
|
|
8 / the arguments are passed on the stack (%esp), 4(%esp), 8(%esp)
|
|
9
|
|
10 .inline ngx_atomic_cmp_set,0
|
|
11 movl (%esp), %ecx
|
|
12 movl 4(%esp), %eax
|
|
13 movl 8(%esp), %edx
|
|
14 lock
|
|
15 cmpxchgl %edx, (%ecx)
|
|
16 setz %al
|
|
17 movzbl %al, %eax
|
|
18 .end
|
|
19
|
|
20
|
|
21 / ngx_atomic_int_t ngx_atomic_fetch_add(ngx_atomic_t *value,
|
|
22 / ngx_atomic_int_t add);
|
|
23 /
|
|
24 / the arguments are passed on the stack (%esp), 4(%esp)
|
|
25
|
|
26 .inline ngx_atomic_fetch_add,0
|
|
27 movl (%esp), %ecx
|
|
28 movl 4(%esp), %eax
|
|
29 lock
|
|
30 xaddl %eax, (%ecx)
|
|
31 .end
|
1309
|
32
|
|
33
|
|
34 / ngx_cpu_pause()
|
|
35
|
|
36 .inline ngx_cpu_pause,0
|
|
37 pause
|
|
38 .end
|