diff options
Diffstat (limited to 'src/os/unix/ngx_sunpro_amd64.il')
-rw-r--r-- | src/os/unix/ngx_sunpro_amd64.il | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/os/unix/ngx_sunpro_amd64.il b/src/os/unix/ngx_sunpro_amd64.il new file mode 100644 index 000000000..0cd94b023 --- /dev/null +++ b/src/os/unix/ngx_sunpro_amd64.il @@ -0,0 +1,30 @@ +/ +/ 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 in %rdi, %rsi, %rdx +/ the result is returned in the %rax + + .inline ngx_atomic_cmp_set,0 + movq %rsi, %rax + lock + cmpxchgq %rdx, (%rdi) + setz %al + movzbq %al, %rax + .end + + +/ ngx_atomic_int_t ngx_atomic_fetch_add(ngx_atomic_t *value, +/ ngx_atomic_int_t add); +/ +/ the arguments are passed in %rdi, %rsi +/ the result is returned in the %rax + + .inline ngx_atomic_fetch_add,0 + movq %rsi, %rax + lock + xaddq %rax, (%rdi) + .end |