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;
 }