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>