Changeset 6646 in vbox for trunk/include
- Timestamp:
- Jan 31, 2008 10:22:24 AM (17 years ago)
- svn:sync-xref-src-repo-rev:
- 27712
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/iprt/asm.h
r6644 r6646 2605 2605 # endif 2606 2606 # else /* !RT_ARCH_AMD64 */ 2607 uint32_t u32Ret;2608 2607 # if RT_INLINE_ASM_GNU_STYLE 2609 2608 uint64_t u64Ret; 2610 2609 # if defined(PIC) || defined(RT_OS_DARWIN) /* darwin: 4.0.1 compiler option / bug? */ 2611 __asm__ __volatile__("xchgl %%ebx, %2\n\t" 2612 "lock; cmpxchg8b %1\n\t" 2613 "xchgl %%ebx, %2\n\t" 2614 : "=A" (u64Ret), 2615 "=m" (*pu64) 2616 : "DS" (u64New & 0xffffffff), 2617 "c" (u64New >> 32), 2610 __asm__ __volatile__("xchgl %%ebx, %1\n\t" 2611 "lock; cmpxchg8b %3\n\t" 2612 "xchgl %%ebx, %1\n\t" 2613 : "=A" (u64Ret) 2614 : "DS" ((uint32_t)u64New), 2615 "c" ((uint32_t)(u64New >> 32)), 2618 2616 "m" (*pu64), 2619 " a" (u64Old & 0xffffffff),2620 "d" (u64Old >> 32));2617 "0" (u64Old) 2618 : "memory" ); 2621 2619 # else /* !PIC */ 2622 2620 __asm__ __volatile__("lock; cmpxchg8b %3\n\t" 2623 : "=A" (u64Ret), 2624 "=m" (*pu64) 2625 : "b" (u64New & 0xffffffff), 2626 "c" (u64New >> 32), 2621 : "=A" (u64Ret) 2622 : "b" ((uint32_t)u64New), 2623 "c" ((uint32_t)(u64New >> 32)), 2627 2624 "m" (*pu64), 2628 " a" (u64Old & 0xffffffff),2629 "d" (u64Old >> 32));2625 "0" (u64Old) 2626 : "memory" ); 2630 2627 # endif 2631 2628 *pu64Old = u64Ret; 2632 2629 return u64Ret != u64Old; 2633 2630 # else 2631 uint32_t u32Ret; 2634 2632 __asm 2635 2633 {
Note:
See TracChangeset
for help on using the changeset viewer.