Changeset 25490 in vbox for trunk/src/VBox/Runtime/common/asm
- Timestamp:
- Dec 18, 2009 3:19:41 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 56161
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/common/asm/ASMAtomicCmpXchgU8.asm
r25486 r25490 1 1 ; $Id$ 2 2 ;; @file 3 ; IPRT - ASMAtomicCmpXchgU 64().3 ; IPRT - ASMAtomicCmpXchgU8(). 4 4 ; 5 5 … … 37 37 38 38 ;; 39 ; Atomically compares and exchanges an unsigned 64-bit int.39 ; Atomically compares and exchanges an unsigned 8-bit int. 40 40 ; 41 ; @param pu 64 x86:ebp+842 ; @param u 64New x86:ebp+c43 ; @param u 64Old x86:ebp+1441 ; @param pu8 x86:esp+4 msc:rcx gcc:rdi 42 ; @param u8New x86:esp+8 msc:dl gcc:sil 43 ; @param u8Old x86:esp+c msc:r8l gcc:dl 44 44 ; 45 45 ; @returns bool result: true if succesfully exchanged, false if not. 46 46 ; x86:al 47 47 ; 48 BEGINPROC_EXPORTED ASMAtomicCmpXchgU64 49 %ifndef RT_ARCH_X86 50 %error port me 48 BEGINPROC_EXPORTED ASMAtomicCmpXchgU8 49 %ifdef RT_ARCH_AMD64 50 %ifdef ASM_CALL64_MSC 51 mov al, r8l 52 lock cmpxchg [rcx], dl 53 %else 54 mov al, dl 55 lock cmpxchg [rdi], sil 56 %endif 57 %else 58 mov ecx, [esp + 04h] 59 mov dl, [esp + 08h] 60 mov al, [esp + 0ch] 61 lock cmpxchg [ecx], dl 51 62 %endif 52 push ebp53 mov ebp, esp54 push ebx55 push edi56 57 mov ebx, dword [ebp+0ch]58 mov ecx, dword [ebp+0ch + 4]59 mov edi, [ebp+08h]60 mov eax, dword [ebp+14h]61 mov edx, dword [ebp+14h + 4]62 lock cmpxchg8b [edi]63 63 setz al 64 64 movzx eax, al 65 ret 66 ENDPROC ASMAtomicCmpXchgU8 65 67 66 pop edi67 pop ebx68 leave69 ret70 ENDPROC ASMAtomicCmpXchgU6471
Note:
See TracChangeset
for help on using the changeset viewer.