Dmitry,
Thanks for removing the blinders on my eyes.
Obviously I read through that many times and only saw the add.
-- John :-[
Dmitry Torokhov wrote:
John,
Unlike regular "addl", "xaddl %eax, (%edx)" is "Exchange and Add" instruction,
it exchanges old value in %(ebx) with data in %eax
John,
Unlike regular "addl", "xaddl %eax, (%edx)" is "Exchange and Add" instruction,
it exchanges old value in %(ebx) with data in %eax and adds and stores the
result in %(ebx), leaving %eax with old data that is later returned.
Thanks,
Dmitry
On Tuesday, July 24, 2012 12:58:08 PM John Wolfe
I am working on a port of the open-vm-tools for UnixWare 7.1.4 compiled
with the native C & C++ compiler. As I was coding AT&T/USLC enhanced
ASM functions equivalent to the __asm__ definitions in vm_atomic.h, I
noticed that the GCC x86 __asm__ statement for Atomic_FetchAnd
AddUnfenced() is cle