561
|
1 /
|
|
2 / Copyright (C) Igor Sysoev
|
|
3 /
|
|
4
|
|
5
|
|
6 / "casa [%o2] 0x80, %o1, %o0" and
|
|
7 / "casxa [%o2] 0x80, %o1, %o0" do the following:
|
|
8 /
|
|
9 / if ([%o2] == %o1) {
|
|
10 / swap(%o0, [%o2]);
|
|
11 / } else {
|
|
12 / %o0 = [%o2];
|
|
13 / }
|
|
14
|
|
15
|
|
16 / ngx_atomic_uint_t ngx_casa(ngx_atomic_uint_t set, ngx_atomic_uint_t old,
|
|
17 / ngx_atomic_t *lock);
|
|
18 /
|
|
19 / the arguments are passed in the %o0, %o1, %o2
|
|
20 / the result is returned in the %o0
|
|
21
|
|
22 .inline ngx_casa,0
|
|
23 casa [%o2] 0x80, %o1, %o0
|
|
24 .end
|
|
25
|
|
26
|
|
27 / ngx_atomic_uint_t ngx_casxa(ngx_atomic_uint_t set, ngx_atomic_uint_t old,
|
|
28 / ngx_atomic_t *lock);
|
|
29 /
|
|
30 / the arguments are passed in the %o0, %o1, %o2
|
|
31 / the result is returned in the %o0
|
|
32
|
|
33 .inline ngx_casxa,0
|
|
34 casxa [%o2] 0x80, %o1, %o0
|
|
35 .end
|