VirtualBox

Ignore:
Timestamp:
Jan 6, 2010 4:19:49 AM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
56380
Message:

iprt/asm.h,ASMAtomic*.asm: the darwin x86 gcc also has trouble with our cmpxchg8b usage, do like we did for gcc 4.3.x/x86 a while back. Did it for *all* cmpxchg8b users (we missed(?) 3 last time).

File:
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/asm/ASMAtomicCmpXchgExU64.asm

    r25664 r25665  
    11; $Id$
    22;; @file
    3 ; IPRT - ASMAtomicCmpXchgU64().
     3; IPRT - ASMAtomicCmpXchgExU64().
    44;
    55
    66;
    7 ; Copyright (C) 2006-2009 Sun Microsystems, Inc.
     7; Copyright (C) 2006-2010 Sun Microsystems, Inc.
    88;
    99; This file is part of VirtualBox Open Source Edition (OSE), as
     
    3737
    3838;;
    39 ; Atomically compares and exchanges an unsigned 64-bit int.
     39; Atomically Exchange an unsigned 64-bit value, ordered.
    4040;
    4141; @param    pu64     x86:ebp+8   gcc:rdi  msc:rcx
    4242; @param    u64New   x86:ebp+c   gcc:rsi  msc:rdx
    4343; @param    u64Old   x86:ebp+14  gcc:rcx  msc:r8
     44; @param    u64Old   x86:ebp+1c  gcc:rdx  msc:r9
    4445;
    4546; @returns  bool result: true if succesfully exchanged, false if not.
    4647;           x86:al
    4748;
    48 BEGINPROC_EXPORTED ASMAtomicCmpXchgU64
     49BEGINPROC_EXPORTED ASMAtomicCmpXchgExU64
    4950%ifdef RT_ARCH_AMD64
    5051 %ifdef ASM_CALL64_MSC
    5152        mov     rax, r8
    5253        lock cmpxchg [rcx], rdx
     54        mov     [r9], rax
    5355 %else
    5456        mov     rax, rcx
    5557        lock cmpxchg [rdi], rsi
     58        mov     [rdx], rax
    5659 %endif
    5760        setz    al
     
    7174        mov     edx, dword [ebp+14h + 4]
    7275        lock cmpxchg8b [edi]
     76        mov     edi, [ebp + 1ch]
     77        mov     [edi],     eax
     78        mov     [edi + 4], edx
    7379        setz    al
    7480        movzx   eax, al
     
    7985        ret
    8086%endif
    81 ENDPROC ASMAtomicCmpXchgU64
     87ENDPROC ASMAtomicCmpXchgExU64
    8288
Note: See TracChangeset for help on using the changeset viewer.

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