VirtualBox

Changeset 6647 in vbox for trunk/include


Ignore:
Timestamp:
Jan 31, 2008 10:38:28 AM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
27713
Message:

fixed ASMAtomicCmpXchgExU64()

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/asm.h

    r6646 r6647  
    26082608    uint64_t u64Ret;
    26092609#   if defined(PIC) || defined(RT_OS_DARWIN) /* darwin: 4.0.1 compiler option / bug? */
    2610     __asm__ __volatile__("xchgl %%ebx, %1\n\t"
    2611                          "lock; cmpxchg8b %3\n\t"
    2612                          "xchgl %%ebx, %1\n\t"
    2613                          : "=A" (u64Ret)
     2610    __asm__ __volatile__("xchgl %%ebx, %2\n\t"
     2611                         "lock; cmpxchg8b %4\n\t"
     2612                         "xchgl %%ebx, %2\n\t"
     2613                         : "=A" (u64Ret),
     2614                           "=m" (*pu64)
    26142615                         : "DS" ((uint32_t)u64New),
    26152616                           "c" ((uint32_t)(u64New >> 32)),
    26162617                           "m" (*pu64),
    2617                            "0" (u64Old)
    2618                          : "memory" );
     2618                           "0" (u64Old));
    26192619#   else /* !PIC */
    2620     __asm__ __volatile__("lock; cmpxchg8b %3\n\t"
    2621                          : "=A" (u64Ret)
     2620    __asm__ __volatile__("lock; cmpxchg8b %4\n\t"
     2621                         : "=A" (u64Ret),
     2622                           "=m" (*pu64)
    26222623                         : "b" ((uint32_t)u64New),
    26232624                           "c" ((uint32_t)(u64New >> 32)),
    26242625                           "m" (*pu64),
    2625                            "0" (u64Old)
    2626                          : "memory" );
     2626                           "0" (u64Old));
    26272627#   endif
    26282628    *pu64Old = u64Ret;
    2629     return u64Ret != u64Old;
     2629    return u64Ret == u64Old;
    26302630#  else
    26312631    uint32_t u32Ret;
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette