Changeset 6650 in vbox
- Timestamp:
- Jan 31, 2008 11:13:16 AM (17 years ago)
- svn:sync-xref-src-repo-rev:
- 27716
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/iprt/asm.h
r6648 r6650 2266 2266 { 2267 2267 # if RT_INLINE_ASM_GNU_STYLE 2268 uint 32_t u32Ret;2268 uint8_t u8Ret; 2269 2269 __asm__ __volatile__("lock; cmpxchgl %2, %0\n\t" 2270 "setz %%al\n\t" 2271 "movzbl %%al, %%eax\n\t" 2270 "setz %1\n\t" 2272 2271 : "=m" (*pu32), 2273 "= a" (u32Ret)2272 "=qm" (u8Ret) 2274 2273 : "r" (u32New), 2275 " 1" (u32Old));2276 return (bool)u 32Ret;2274 "a" (u32Old)); 2275 return (bool)u8Ret; 2277 2276 2278 2277 # elif RT_INLINE_ASM_USES_INTRIN … … 2341 2340 # elif defined(RT_ARCH_AMD64) 2342 2341 # if RT_INLINE_ASM_GNU_STYLE 2343 uint 64_t u64Ret;2342 uint8_t u8Ret; 2344 2343 __asm__ __volatile__("lock; cmpxchgq %2, %0\n\t" 2345 "setz %%al\n\t" 2346 "movzbl %%al, %%eax\n\t" 2344 "setz %1\n\t" 2347 2345 : "=m" (*pu64), 2348 "= a" (u64Ret)2346 "=qm" (u8Ret) 2349 2347 : "r" (u64New), 2350 " 1" (u64Old));2351 return (bool)u 64Ret;2348 "a" (u64Old)); 2349 return (bool)u8Ret; 2352 2350 # else 2353 2351 bool fRet; … … 2493 2491 { 2494 2492 # if RT_INLINE_ASM_GNU_STYLE 2495 uint 32_t u32Ret;2493 uint8_t u8Ret; 2496 2494 __asm__ __volatile__("lock; cmpxchgl %3, %0\n\t" 2497 "movl %%eax, %2\n\t" 2498 "setz %%al\n\t" 2499 "movzbl %%al, %%eax\n\t" 2495 "setz %1\n\t" 2500 2496 : "=m" (*pu32), 2501 "= a" (u32Ret),2502 "= m" (*pu32Old)2497 "=qm" (u8Ret), 2498 "=a" (*pu32Old) 2503 2499 : "r" (u32New), 2504 " 1" (u32Old));2505 return (bool)u 32Ret;2500 "a" (u32Old)); 2501 return (bool)u8Ret; 2506 2502 2507 2503 # elif RT_INLINE_ASM_USES_INTRIN … … 2578 2574 # elif defined(RT_ARCH_AMD64) 2579 2575 # if RT_INLINE_ASM_GNU_STYLE 2580 uint 64_t u64Ret;2576 uint8_t u8Ret; 2581 2577 __asm__ __volatile__("lock; cmpxchgq %3, %0\n\t" 2582 "movq %%rax, %2\n\t" 2583 "setz %%al\n\t" 2584 "movzbl %%al, %%eax\n\t" 2578 "setz %1\n\t" 2585 2579 : "=m" (*pu64), 2586 "= a" (u64Ret),2587 "= m" (*pu64Old)2580 "=qm" (u8Ret), 2581 "=a" (*pu64Old) 2588 2582 : "r" (u64New), 2589 " 1" (u64Old));2583 "a" (u64Old)); 2590 2584 return (bool)u64Ret; 2591 2585 # else
Note:
See TracChangeset
for help on using the changeset viewer.