| / |
| / Copyright (C) Igor Sysoev |
| / Copyright (C) Nginx, Inc. |
| / |
| |
| |
| / "casa [%o2] 0x80, %o1, %o0" and |
| / "casxa [%o2] 0x80, %o1, %o0" do the following: |
| / |
| / if ([%o2] == %o1) { |
| / swap(%o0, [%o2]); |
| / } else { |
| / %o0 = [%o2]; |
| / } |
| |
| |
| / ngx_atomic_uint_t ngx_casa(ngx_atomic_uint_t set, ngx_atomic_uint_t old, |
| / ngx_atomic_t *lock); |
| / |
| / the arguments are passed in the %o0, %o1, %o2 |
| / the result is returned in the %o0 |
| |
| .inline ngx_casa,0 |
| casa [%o2] 0x80, %o1, %o0 |
| .end |
| |
| |
| / ngx_atomic_uint_t ngx_casxa(ngx_atomic_uint_t set, ngx_atomic_uint_t old, |
| / ngx_atomic_t *lock); |
| / |
| / the arguments are passed in the %o0, %o1, %o2 |
| / the result is returned in the %o0 |
| |
| .inline ngx_casxa,0 |
| casxa [%o2] 0x80, %o1, %o0 |
| .end |