X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=share%2Fkernelcompat.h;h=ee676deb570cf9a1fde6a5b3051f95d6fdcc3b3b;hb=9c67dc50afb2eaa1c3966ee73fac3ce55935556c;hp=b442718e2af19a7e611aa36d03f04118834f6ab8;hpb=c1dea0b3d1312d0e3747da93eb949145c487eeba;p=ust.git diff --git a/share/kernelcompat.h b/share/kernelcompat.h index b442718..ee676de 100644 --- a/share/kernelcompat.h +++ b/share/kernelcompat.h @@ -159,25 +159,25 @@ static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old, unsigned long prev; switch (size) { case 1: - asm volatile("lock cmpxchgb %b1,%2" + asm volatile("lock; cmpxchgb %b1,%2" : "=a"(prev) : "q"(new), "m"(*__xg(ptr)), "0"(old) : "memory"); return prev; case 2: - asm volatile("lock cmpxchgw %w1,%2" + asm volatile("lock; cmpxchgw %w1,%2" : "=a"(prev) : "r"(new), "m"(*__xg(ptr)), "0"(old) : "memory"); return prev; case 4: - asm volatile("lock cmpxchgl %k1,%2" + asm volatile("lock; cmpxchgl %k1,%2" : "=a"(prev) : "r"(new), "m"(*__xg(ptr)), "0"(old) : "memory"); return prev; case 8: - asm volatile("lock cmpxchgq %1,%2" + asm volatile("lock; cmpxchgq %1,%2" : "=a"(prev) : "r"(new), "m"(*__xg(ptr)), "0"(old) : "memory");