| / | |
| / 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 |