2005-10-12 21:50:36 +08:00
|
|
|
/
|
|
|
|
/ Copyright (C) Igor Sysoev
|
|
|
|
/
|
|
|
|
|
|
|
|
|
|
|
|
/ "casa [%o2] 0x80, %o1, %o0" and
|
|
|
|
/ "casxa [%o2] 0x80, %o1, %o0" do the following:
|
2005-11-15 21:30:52 +08:00
|
|
|
/
|
2005-10-12 21:50:36 +08:00
|
|
|
/ 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
|