1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
/
/ Copyright (C) Igor Sysoev
/
/ "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
|