Annotation of embedaddon/nginx/src/os/unix/ngx_sunpro_x86.il, revision 1.1.1.1
1.1 misho 1: /
2: / Copyright (C) Igor Sysoev
3: / Copyright (C) Nginx, Inc.
4: /
5:
6: / ngx_atomic_uint_t ngx_atomic_cmp_set(ngx_atomic_t *lock,
7: / ngx_atomic_uint_t old, ngx_atomic_uint_t set);
8: /
9: / the arguments are passed on stack (%esp), 4(%esp), 8(%esp)
10:
11: .inline ngx_atomic_cmp_set,0
12: movl (%esp), %ecx
13: movl 4(%esp), %eax
14: movl 8(%esp), %edx
15: lock
16: cmpxchgl %edx, (%ecx)
17: setz %al
18: movzbl %al, %eax
19: .end
20:
21:
22: / ngx_atomic_int_t ngx_atomic_fetch_add(ngx_atomic_t *value,
23: / ngx_atomic_int_t add);
24: /
25: / the arguments are passed on stack (%esp), 4(%esp)
26:
27: .inline ngx_atomic_fetch_add,0
28: movl (%esp), %ecx
29: movl 4(%esp), %eax
30: lock
31: xaddl %eax, (%ecx)
32: .end
33:
34:
35: / ngx_cpu_pause()
36: /
37: / the "rep; nop" is used instead of "pause" to avoid the "[ PAUSE ]" hardware
38: / capability added by linker because Solaris/i386 does not know about it:
39: /
40: / ld.so.1: nginx: fatal: hardware capability unsupported: 0x2000 [ PAUSE ]
41:
42: .inline ngx_cpu_pause,0
43: rep; nop
44: .end
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>