Is OSCompareAndSwap (Mac OS X) equivalent to CMPXCHG8B?

680 views Asked by At

Is OSCompareAndSwap (Mac OS X) equivalent to CMPXCHG8B?

2

There are 2 answers

2
Ken On BEST ANSWER

You can find the definition of the atomic functions in the OSAtomic.s file in the XNU source. For example, here's OSAtomicCompareAndSwapPtr for x86_64 in version 1486.2.11:

_OSCompareAndSwap64:
_OSCompareAndSwapPtr: #;oldValue, newValue, ptr
    movq         %rdi, %rax
    lock
    cmpxchgq    %rsi, 0(%rdx)   #; CAS (eax is an implicit operand)
    sete        %al             #; did CAS succeed? (TZ=1)
    movzbq      %al, %rax       #; clear out the high bytes
    ret
2
drlazy On

lock cmpxchg8b

more exactly

It's for intel processors, but take into account, that osx exists not only for intel architecture, so asm will be different