|
|
@ -41,7 +41,7 @@ static inline long latom_cmp_xchg(latom_t *latom, long compare, long val)
|
|
|
|
|
|
|
|
|
|
|
|
__asm__ volatile(
|
|
|
|
__asm__ volatile(
|
|
|
|
" lock \n"
|
|
|
|
" lock \n"
|
|
|
|
" cmpxchlq %1, (%2) \n" /* if ((rax = latom->_value) == compare) latom->_value = val */
|
|
|
|
" cmpxchgq %1, (%2) \n" /* if ((rax = latom->_value) == compare) latom->_value = val */
|
|
|
|
: "+a"(rax)
|
|
|
|
: "+a"(rax)
|
|
|
|
: "r"(val), "r"(&latom->_value)
|
|
|
|
: "r"(val), "r"(&latom->_value)
|
|
|
|
: "cc", "memory"
|
|
|
|
: "cc", "memory"
|
|
|
|