Commit 4955a2cd1600344081e0b618d96c3b29942f76ef

Authored by bellard
1 parent a8d3431a

test and set fixes


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1269 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 13 additions and 15 deletions
exec-all.h
@@ -392,28 +392,26 @@ static inline int testandset (int *p) @@ -392,28 +392,26 @@ static inline int testandset (int *p)
392 #ifdef __i386__ 392 #ifdef __i386__
393 static inline int testandset (int *p) 393 static inline int testandset (int *p)
394 { 394 {
395 - char ret;  
396 - long int readval; 395 + long int readval = 0;
397 396
398 - __asm__ __volatile__ ("lock; cmpxchgl %3, %1; sete %0"  
399 - : "=q" (ret), "=m" (*p), "=a" (readval)  
400 - : "r" (1), "m" (*p), "a" (0)  
401 - : "memory");  
402 - return ret; 397 + __asm__ __volatile__ ("lock; cmpxchgl %2, %0"
  398 + : "+m" (*p), "+a" (readval)
  399 + : "r" (1)
  400 + : "cc");
  401 + return readval;
403 } 402 }
404 #endif 403 #endif
405 404
406 #ifdef __x86_64__ 405 #ifdef __x86_64__
407 static inline int testandset (int *p) 406 static inline int testandset (int *p)
408 { 407 {
409 - char ret;  
410 - int readval; 408 + long int readval = 0;
411 409
412 - __asm__ __volatile__ ("lock; cmpxchgl %3, %1; sete %0"  
413 - : "=q" (ret), "=m" (*p), "=a" (readval)  
414 - : "r" (1), "m" (*p), "a" (0)  
415 - : "memory");  
416 - return ret; 410 + __asm__ __volatile__ ("lock; cmpxchgl %2, %0"
  411 + : "+m" (*p), "+a" (readval)
  412 + : "r" (1)
  413 + : "cc");
  414 + return readval;
417 } 415 }
418 #endif 416 #endif
419 417
@@ -484,7 +482,7 @@ static inline int testandset (int *p) @@ -484,7 +482,7 @@ static inline int testandset (int *p)
484 : "=r" (ret) 482 : "=r" (ret)
485 : "m" (p) 483 : "m" (p)
486 : "cc","memory"); 484 : "cc","memory");
487 - return ret == 0; 485 + return ret;
488 } 486 }
489 #endif 487 #endif
490 488