Changeset 6647 in vbox for trunk/include
- Timestamp:
- Jan 31, 2008 10:38:28 AM (17 years ago)
- svn:sync-xref-src-repo-rev:
- 27713
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/iprt/asm.h
r6646 r6647 2608 2608 uint64_t u64Ret; 2609 2609 # 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) 2614 2615 : "DS" ((uint32_t)u64New), 2615 2616 "c" ((uint32_t)(u64New >> 32)), 2616 2617 "m" (*pu64), 2617 "0" (u64Old) 2618 : "memory" ); 2618 "0" (u64Old)); 2619 2619 # 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) 2622 2623 : "b" ((uint32_t)u64New), 2623 2624 "c" ((uint32_t)(u64New >> 32)), 2624 2625 "m" (*pu64), 2625 "0" (u64Old) 2626 : "memory" ); 2626 "0" (u64Old)); 2627 2627 # endif 2628 2628 *pu64Old = u64Ret; 2629 return u64Ret != u64Old;2629 return u64Ret == u64Old; 2630 2630 # else 2631 2631 uint32_t u32Ret;
Note:
See TracChangeset
for help on using the changeset viewer.