Mercurial > hg > nginx
diff src/core/ngx_atomic.h @ 300:502b03d9d2a3
nginx-0.0.3-2004-03-31-00:31:58 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Tue, 30 Mar 2004 20:31:58 +0000 |
parents | 46b7eeb8a116 |
children | 744965ec6275 |
line wrap: on
line diff
--- a/src/core/ngx_atomic.h +++ b/src/core/ngx_atomic.h @@ -11,7 +11,7 @@ typedef volatile uint32_t ngx_atomic_t; #if (NGX_SMP) -#define NGX_SMP_LOCK "lock" +#define NGX_SMP_LOCK "lock;" #else #define NGX_SMP_LOCK #endif @@ -21,14 +21,12 @@ static ngx_inline uint32_t ngx_atomic_in { uint32_t old; - old = 1; - __asm__ volatile ( NGX_SMP_LOCK - " xaddl %0, %1; " + " xaddl %0, %2; " - : "+q" (old) : "m" (*value)); + : "=q" (old) : "0" (1), "m" (*value)); return old; } @@ -38,14 +36,12 @@ static ngx_inline uint32_t ngx_atomic_de { uint32_t old; - old = (uint32_t) -1; - __asm__ volatile ( NGX_SMP_LOCK " xaddl %0, %1; " - : "+q" (old) : "m" (*value)); + : "=q" (old) : "0" (-1), "m" (*value)); return old; }