OSDN Git Service

* winbase.h (ilockincr): YA correction to ensure correct operation with no
authorcgf <cgf>
Thu, 3 Jun 2004 20:48:01 +0000 (20:48 +0000)
committercgf <cgf>
Thu, 3 Jun 2004 20:48:01 +0000 (20:48 +0000)
optimization.
(ilockdecr): Ditto.

winsup/cygwin/ChangeLog
winsup/cygwin/winbase.h

index 33b3064..dabd6fc 100644 (file)
@@ -1,3 +1,9 @@
+2004-06-03  Christopher Faylor  <me@cgf.cx>
+
+       * winbase.h (ilockincr): YA correction to ensure correct operation with
+       no optimization.
+       (ilockdecr): Ditto.
+
 2004-06-03  Corinna Vinschen  <corinna@vinschen.de>
 
        * cygserver.h (CYGWIN_SERVER_VERSION_API): Bump.
index 3d1f202..0411afd 100644 (file)
@@ -9,9 +9,9 @@ ilockincr (long *m)
   register int __res;
   __asm__ __volatile__ ("\n\
        movl    $1,%0\n\
-       lock    xadd %0,%1\n\
+       lock    xadd %0,%2\n\
        inc     %0\n\
-       ": "=a" (__res), "+m" (*m): : "cc");
+       ": "=a" (__res), "=m" (*m): "m" (m): "cc");
   return __res;
 }
 
@@ -21,9 +21,9 @@ ilockdecr (long *m)
   register int __res;
   __asm__ __volatile__ ("\n\
        movl    $0xffffffff,%0\n\
-       lock    xadd %0,%1\n\
+       lock    xadd %0,%2\n\
        dec     %0\n\
-       ": "=a" (__res), "+m" (*m):  : "cc");
+       ": "=a" (__res), "=m" (*m): "m" (m): "cc");
   return __res;
 }