My scratch implementation of compare_and_swap using lock cmpxchg:
compare_and_swap
lock cmpxchg
compare_and_swap: ld eax, a lock cmpxchg x, b bnz return_true ld eax, $0 ret return_true: ld eax, $1 ret
My scratch implementation of
compare_and_swap
usinglock cmpxchg
: