VirtualBox

Changeset 12232

Show
Ignore:
Timestamp:
09/08/08 17:23:46 (2 months ago)
Author:
vboxsync
Message:

iprt/asm.h: better fix

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/include/iprt/asm.h

    r12223 r12232  
    25382538                         : "0" (*pu64), 
    25392539                           "b" ( (uint32_t)u64 ), 
    2540                            "c" ( (uint32_t)(u64 >> 32) ), 
    2541                            "m" (*pu64)); 
     2540                           "c" ( (uint32_t)(u64 >> 32) )); 
    25422541#   endif 
    25432542#  else 
     
    28392838                         : "=a" (u32Ret), 
    28402839                           "=d" (u32Spill), 
    2841                            "=m" (*pu64) 
     2840                           "+m" (*pu64) 
    28422841                         : "A" (u64Old), 
    28432842                           "m" ( u32EBX ), 
    28442843                           "c" ( (uint32_t)(u64New >> 32) ), 
    2845                            "S" (pu64) 
    2846 #    ifdef RT_OS_DARWIN 
    2847                          :  "memory" 
    2848 #    else 
    2849                          ,  "m" (*pu64) 
    2850 #    endif 
    2851                         ); 
     2844                           "S" (pu64)); 
    28522845#   else /* !PIC */ 
    28532846    uint32_t u32Spill; 
     
    28572850                         : "=a" (u32Ret), 
    28582851                           "=d" (u32Spill), 
    2859                            "=m" (*pu64) 
     2852                           "+m" (*pu64) 
    28602853                         : "A" (u64Old), 
    28612854                           "b" ( (uint32_t)u64New ), 
    2862                            "c" ( (uint32_t)(u64New >> 32) ), 
    2863                            "m" (*pu64)); 
     2855                           "c" ( (uint32_t)(u64New >> 32) )); 
    28642856#   endif 
    28652857    return (bool)u32Ret; 
     
    37283720                         "movl %3, %%ebx\n\t" 
    37293721                         : "=A" (u64), 
    3730                            "=m" (*pu64) 
     3722                           "+m" (*pu64) 
    37313723                         : "0" (0), 
    37323724                           "m" (u32EBX), 
    37333725                           "c" (0), 
    3734                            "S" (pu64) 
    3735 #    ifdef RT_OS_DARWIN 
    3736                          :  "memory" 
    3737 #    else 
    3738                          ,  "m" (*pu64) 
    3739 #    endif 
    3740                         ); 
     3726                           "S" (pu64)); 
    37413727#   else /* !PIC */ 
    37423728    __asm__ __volatile__("lock; cmpxchg8b %1\n\t" 
    37433729                         : "=A" (u64), 
    3744                            "=m" (*pu64) 
     3730                           "+m" (*pu64) 
    37453731                         : "0" (0), 
    37463732                           "b" (0), 
    3747                            "c" (0), 
    3748                            "m" (*pu64)); 
     3733                           "c" (0)); 
    37493734#   endif 
    37503735#  else 
     
    38073792                         "movl %3, %%ebx\n\t" 
    38083793                         : "=A" (u64), 
    3809                            "=m" (*pu64) 
     3794                           "+m" (*pu64) 
    38103795                         : "0" (0), 
    38113796                           "m" (u32EBX), 
    38123797                           "c" (0), 
    3813                            "S" (pu64) 
    3814 #    ifdef RT_OS_DARWIN 
    3815                          :  "memory" 
    3816 #    else 
    3817                          ,  "m" (*pu64) 
    3818 #    endif 
    3819                         ); 
     3798                           "S" (pu64)); 
    38203799#   else /* !PIC */ 
    38213800    __asm__ __volatile__("cmpxchg8b %1\n\t" 
    38223801                         : "=A" (u64), 
    3823                            "=m" (*pu64) 
     3802                           "+m" (*pu64) 
    38243803                         : "0" (0), 
    38253804                           "b" (0), 
    3826                            "c" (0), 
    3827                            "m" (*pu64)); 
     3805                           "c" (0)); 
    38283806#   endif 
    38293807#  else 

© 2008 Sun Microsystems, Inc.
ContactPrivacy policy