Question

Is OSCompareAndSwap (Mac OS X) equivalent to CMPXCHG8B?

Was it helpful?

Solution

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

OTHER TIPS

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top