VirtualBox

Changeset 7103 in vbox


Ignore:
Timestamp:
Feb 25, 2008 12:10:04 PM (17 years ago)
Author:
vboxsync
Message:

backed out r28333 as it didn't fix anything

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/asm.h

    r7090 r7103  
    20282028    uint32_t u32 = (uint32_t)u64;
    20292029    __asm__ __volatile__(/*"xchgl %%esi, %5\n\t"*/
    2030                          "xchgl %%ebx, %2\n\t"
     2030                         "xchgl %%ebx, %3\n\t"
    20312031                         "1:\n\t"
    2032                          "movl  (%4), %%eax\n\t"
    2033                          "movl 4(%4), %%edx\n\t"
    2034                          "lock; cmpxchg8b (%4)\n\t"
     2032                         "lock; cmpxchg8b (%5)\n\t"
    20352033                         "jnz 1b\n\t"
    2036                          "xchgl %%ebx, %2\n\t"
     2034                         "xchgl %%ebx, %3\n\t"
    20372035                         /*"xchgl %%esi, %5\n\t"*/
    20382036                         : "=A" (u64),
    20392037                           "=m" (*pu64)
    2040                          : "m" ( u32 ),
     2038                         : "0" (*pu64),
     2039                           "m" ( u32 ),
    20412040                           "c" ( (uint32_t)(u64 >> 32) ),
    20422041                           "S" (pu64) );
    20432042#   else /* !PIC */
    20442043    __asm__ __volatile__("1:\n\t"
    2045                          "movl  (%4), %%eax\n\t"
    2046                          "movl 4(%4), %%edx\n\t"
    2047                          "lock; cmpxchg8b (%4)\n\t"
     2044                         "lock; cmpxchg8b %1\n\t"
    20482045                         "jnz 1b\n\t"
    20492046                         : "=A" (u64),
    20502047                           "=m" (*pu64)
    2051                          : "b" ( (uint32_t)u64 ),
    2052                            "c" ( (uint32_t)(u64 >> 32) ),
    2053                            "S" (pu64) );
     2048                         : "0" (*pu64),
     2049                           "b" ( (uint32_t)u64 ),
     2050                           "c" ( (uint32_t)(u64 >> 32) ));
    20542051#   endif
    20552052#  else
     
    20592056        mov     ecx, dword ptr [u64 + 4]
    20602057        mov     edi, pu64
    2061     retry:
    20622058        mov     eax, dword ptr [edi]
    20632059        mov     edx, dword ptr [edi + 4]
     2060    retry:
    20642061        lock cmpxchg8b [edi]
    20652062        jnz retry
     
    21312128            mov     rcx, dword ptr [u128 + 8]
    21322129            mov     rdi, pu128
    2133         retry:
    21342130            mov     rax, dword ptr [rdi]
    21352131            mov     rdx, dword ptr [rdi + 8]
     2132        retry:
    21362133            lock cmpxchg16b [rdi]
    21372134            jnz retry
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette