Changeset 3361 in vbox
- Timestamp:
- Jul 2, 2007 10:57:57 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/iprt/asm.h
r2981 r3361 2285 2285 # if defined(PIC) || defined(__DARWIN__) /* darwin: 4.0.1 compiler option / bug? */ 2286 2286 uint32_t u32 = (uint32_t)u64New; 2287 __asm__ __volatile__("xchgl %%ebx, %3\n\t" 2288 "lock; cmpxchg8b (%5)\n\t" 2287 uint32_t u32Spill; 2288 __asm__ __volatile__("xchgl %%ebx, %4\n\t" 2289 "lock; cmpxchg8b (%6)\n\t" 2289 2290 "setz %%al\n\t" 2290 "xchgl %%ebx, % 3\n\t"2291 "xchgl %%ebx, %4\n\t" 2291 2292 "movzx %%al, %%eax\n\t" 2292 2293 : "=a" (u32Ret), 2294 "=d" (u32Spill), 2293 2295 "=m" (*pu64) 2294 2296 : "A" (u64Old), … … 2297 2299 "S" (pu64) ); 2298 2300 # else /* !PIC */ 2299 __asm__ __volatile__("lock; cmpxchg8b %1\n\t" 2301 uint32_t u32Spill; 2302 __asm__ __volatile__("lock; cmpxchg8b %2\n\t" 2300 2303 "setz %%al\n\t" 2301 2304 "movzx %%al, %%eax\n\t" 2302 2305 : "=a" (u32Ret), 2306 "=d" (u32Spill), 2303 2307 "=m" (*pu64) 2304 2308 : "A" (u64Old), … … 2956 2960 "divl %%ecx \n\t" /* u64Result.lo */ 2957 2961 "movl %%edi,%%edx \n\t" /* u64Result.hi */ 2958 : "=A"(u64Result), 2962 : "=A"(u64Result), "=c"(u32Dummy), 2959 2963 "=S"(u32Dummy), "=D"(u32Dummy) 2960 2964 : "a"((uint32_t)u64A),
Note:
See TracChangeset
for help on using the changeset viewer.