Index: trunk/include/iprt/asm.h
===================================================================
--- trunk/include/iprt/asm.h	(revision 12147)
+++ trunk/include/iprt/asm.h	(revision 12153)
@@ -2276,5 +2276,6 @@
                          : "=m" (*pu8),
                            "=q" (u8) /* =r - busted on g++ (GCC) 3.4.4 20050721 (Red Hat 3.4.4-2) */
-                         : "1" (u8));
+                         : "1" (u8),
+                           "m" (*pu8));
 # else
     __asm
@@ -2344,5 +2345,6 @@
                          : "=m" (*pu16),
                            "=r" (u16)
-                         : "1" (u16));
+                         : "1" (u16),
+                           "m" (*pu16));
 # else
     __asm
@@ -2395,5 +2397,6 @@
                          : "=m" (*pu32),
                            "=r" (u32)
-                         : "1" (u32));
+                         : "1" (u32),
+                           "m" (*pu32));
 
 # elif RT_INLINE_ASM_USES_INTRIN
@@ -2454,5 +2457,6 @@
                          : "=m" (*pu64),
                            "=r" (u64)
-                         : "1" (u64));
+                         : "1" (u64),
+                           "m" (pu64));
 #  else
     __asm
@@ -2480,5 +2484,6 @@
                            "m" ( u32EBX ),
                            "c" ( (uint32_t)(u64 >> 32) ),
-                           "S" (pu64) );
+                           "S" (pu64),
+                           "m" (*pu64));
 #   else /* !PIC */
     __asm__ __volatile__("1:\n\t"
@@ -2489,5 +2494,6 @@
                          : "0" (*pu64),
                            "b" ( (uint32_t)u64 ),
-                           "c" ( (uint32_t)(u64 >> 32) ));
+                           "c" ( (uint32_t)(u64 >> 32) ),
+                           "m" (*pu64));
 #   endif
 #  else
@@ -2684,5 +2690,6 @@
                            "=a" (u32Old)
                          : "r" (u32New),
-                           "2" (u32Old));
+                           "2" (u32Old),
+                           "m" (*pu32));
     return (bool)u8Ret;
 
@@ -2759,5 +2766,6 @@
                            "=a" (u64Old)
                          : "r" (u64New),
-                           "2" (u64Old));
+                           "2" (u64Old),
+                           "m" (*pu64));
     return (bool)u8Ret;
 #  else
@@ -2791,5 +2799,6 @@
                            "m" ( u32EBX ),
                            "c" ( (uint32_t)(u64New >> 32) ),
-                           "S" (pu64) );
+                           "S" (pu64),
+                           "m" (*pu64));
 #   else /* !PIC */
     uint32_t u32Spill;
@@ -2802,5 +2811,6 @@
                          : "A" (u64Old),
                            "b" ( (uint32_t)u64New ),
-                           "c" ( (uint32_t)(u64New >> 32) ));
+                           "c" ( (uint32_t)(u64New >> 32) ),
+                           "m" (*pu64));
 #   endif
     return (bool)u32Ret;
@@ -2928,5 +2938,6 @@
                            "=a" (*pu32Old)
                          : "r" (u32New),
-                           "a" (u32Old));
+                           "a" (u32Old),
+                           "m" (*pu32));
     return (bool)u8Ret;
 
@@ -3011,5 +3022,6 @@
                            "=a" (*pu64Old)
                          : "r" (u64New),
-                           "a" (u64Old));
+                           "a" (u64Old),
+                           "m" (*pu64));
     return (bool)u8Ret;
 #  else
@@ -3195,5 +3207,6 @@
                          : "=r" (u32),
                            "=m" (*pu32)
-                         : "0" (u32)
+                         : "0" (u32),
+                           "m" (*pu32)
                          : "memory");
     return u32;
@@ -3250,5 +3263,6 @@
                          : "=r" (u32),
                            "=m" (*pu32)
-                         : "0" (1)
+                         : "0" (1),
+                           "m" (*pu32)
                          : "memory");
     return u32+1;
@@ -3304,5 +3318,6 @@
                          : "=r" (u32),
                            "=m" (*pu32)
-                         : "0" (-1)
+                         : "0" (-1),
+                           "m" (*pu32)
                          : "memory");
     return u32-1;
@@ -3355,5 +3370,6 @@
     __asm__ __volatile__("lock; orl %1, %0\n\t"
                          : "=m" (*pu32)
-                         : "ir" (u32));
+                         : "ir" (u32),
+                           "m" (*pu32));
 # else
     __asm
@@ -3402,5 +3418,6 @@
     __asm__ __volatile__("lock; andl %1, %0\n\t"
                          : "=m" (*pu32)
-                         : "ir" (u32));
+                         : "ir" (u32),
+                           "m" (*pu32));
 # else
     __asm
@@ -3666,5 +3683,6 @@
                            "m" (u32EBX),
                            "c" (0),
-                           "S" (pu64));
+                           "S" (pu64),
+                           "m" (*pu64));
 #   else /* !PIC */
     __asm__ __volatile__("lock; cmpxchg8b %1\n\t"
@@ -3673,5 +3691,6 @@
                          : "0" (0),
                            "b" (0),
-                           "c" (0));
+                           "c" (0),
+                           "m" (*pu64));
 #   endif
 #  else
@@ -3738,5 +3757,6 @@
                            "m" (u32EBX),
                            "c" (0),
-                           "S" (pu64));
+                           "S" (pu64),
+                           "m" (*pu64));
 #   else /* !PIC */
     __asm__ __volatile__("cmpxchg8b %1\n\t"
@@ -3745,5 +3765,6 @@
                          : "0" (0),
                            "b" (0),
-                           "c" (0));
+                           "c" (0),
+                           "m" (*pu64));
 #   endif
 #  else
@@ -4900,5 +4921,6 @@
     __asm__ __volatile__ ("btsl %1, %0"
                           : "=m" (*(volatile long *)pvBitmap)
-                          : "Ir" (iBit)
+                          : "Ir" (iBit),
+                            "m" (*(volatile long *)pvBitmap)
                           : "memory");
 # else
@@ -4936,5 +4958,6 @@
     __asm__ __volatile__ ("lock; btsl %1, %0"
                           : "=m" (*(volatile long *)pvBitmap)
-                          : "Ir" (iBit)
+                          : "Ir" (iBit),
+                            "m" (*(volatile long *)pvBitmap)
                           : "memory");
 # else
@@ -4973,5 +4996,6 @@
     __asm__ __volatile__ ("btrl %1, %0"
                           : "=m" (*(volatile long *)pvBitmap)
-                          : "Ir" (iBit)
+                          : "Ir" (iBit),
+                            "m" (*(volatile long *)pvBitmap)
                           : "memory");
 # else
@@ -5008,5 +5032,6 @@
     __asm__ __volatile__ ("lock; btrl %1, %0"
                           : "=m" (*(volatile long *)pvBitmap)
-                          : "Ir" (iBit)
+                          : "Ir" (iBit),
+                            "m" (*(volatile long *)pvBitmap)
                           : "memory");
 # else
@@ -5044,5 +5069,6 @@
     __asm__ __volatile__ ("btcl %1, %0"
                           : "=m" (*(volatile long *)pvBitmap)
-                          : "Ir" (iBit)
+                          : "Ir" (iBit),
+                            "m" (*(volatile long *)pvBitmap)
                           : "memory");
 # else
@@ -5078,5 +5104,6 @@
     __asm__ __volatile__ ("lock; btcl %1, %0"
                           : "=m" (*(volatile long *)pvBitmap)
-                          : "Ir" (iBit)
+                          : "Ir" (iBit),
+                            "m" (*(volatile long *)pvBitmap)
                           : "memory");
 # else
@@ -5121,5 +5148,6 @@
                           : "=q" (rc.u32),
                             "=m" (*(volatile long *)pvBitmap)
-                          : "Ir" (iBit)
+                          : "Ir" (iBit),
+                            "m" (*(volatile long *)pvBitmap)
                           : "memory");
 # else
@@ -5166,5 +5194,6 @@
                           : "=q" (rc.u32),
                             "=m" (*(volatile long *)pvBitmap)
-                          : "Ir" (iBit)
+                          : "Ir" (iBit),
+                            "m" (*(volatile long *)pvBitmap)
                           : "memory");
 # else
@@ -5212,5 +5241,6 @@
                           : "=q" (rc.u32),
                             "=m" (*(volatile long *)pvBitmap)
-                          : "Ir" (iBit)
+                          : "Ir" (iBit),
+                            "m" (*(volatile long *)pvBitmap)
                           : "memory");
 # else
@@ -5259,5 +5289,6 @@
                           : "=q" (rc.u32),
                             "=m" (*(volatile long *)pvBitmap)
-                          : "Ir" (iBit)
+                          : "Ir" (iBit),
+                            "m" (*(volatile long *)pvBitmap)
                           : "memory");
 # else
@@ -5305,5 +5336,6 @@
                           : "=q" (rc.u32),
                             "=m" (*(volatile long *)pvBitmap)
-                          : "Ir" (iBit)
+                          : "Ir" (iBit),
+                            "m" (*(volatile long *)pvBitmap)
                           : "memory");
 # else
@@ -5348,5 +5380,6 @@
                           : "=q" (rc.u32),
                             "=m" (*(volatile long *)pvBitmap)
-                          : "Ir" (iBit)
+                          : "Ir" (iBit),
+                            "m" (*(volatile long *)pvBitmap)
                           : "memory");
 # else
