int linux_decrement(int* my_value)
{
asm volatile ( "mfence \n"
"lock xadd %0, %1 \n"
"mfence \n"
"sub $1, %0 \n"
: "+r" (ret)
: "m" (*my_val)
: "memory");
return ret;
}