В GCC есть нечто большее, чем это. В инструкции вы должны сообщить компилятору, что изменилось, чтобы его оптимизатор не испортился. Я не эксперт, но иногда это выглядит примерно так:
asm ("lock; xaddl %0,%2" : "=r" (result) : "0" (1), "m" (*atom) : "memory");
Это хорошая идея написать пример кода на C, затем попросить GCC создать листинг сборки, а затем изменить этот код.