Index: /trunk/src/VBox/Runtime/common/asm/ASMAtomicCmpXchgU64.asm
===================================================================
--- /trunk/src/VBox/Runtime/common/asm/ASMAtomicCmpXchgU64.asm	(revision 25663)
+++ /trunk/src/VBox/Runtime/common/asm/ASMAtomicCmpXchgU64.asm	(revision 25664)
@@ -39,7 +39,7 @@
 ; Atomically compares and exchanges an unsigned 64-bit int.
 ;
-; @param    pu64     x86:ebp+8
-; @param    u64New   x86:ebp+c
-; @param    u64Old   x86:ebp+14
+; @param    pu64     x86:ebp+8   gcc:rdi  msc:rcx
+; @param    u64New   x86:ebp+c   gcc:rsi  msc:rdx
+; @param    u64Old   x86:ebp+14  gcc:rcx  msc:r8
 ;
 ; @returns  bool result: true if succesfully exchanged, false if not.
@@ -47,7 +47,17 @@
 ;
 BEGINPROC_EXPORTED ASMAtomicCmpXchgU64
-%ifndef RT_ARCH_X86
- %error port me
+%ifdef RT_ARCH_AMD64
+ %ifdef ASM_CALL64_MSC
+        mov     rax, r8
+        lock cmpxchg [rcx], rdx
+ %else
+        mov     rax, rcx
+        lock cmpxchg [rdi], rsi
+ %endif
+        setz    al
+        movzx   eax, al
+        ret
 %endif
+%ifdef RT_ARCH_X86
         push    ebp
         mov     ebp, esp
@@ -68,4 +78,5 @@
         leave
         ret
+%endif
 ENDPROC ASMAtomicCmpXchgU64
 
Index: /trunk/src/VBox/Runtime/common/asm/ASMAtomicReadU64.asm
===================================================================
--- /trunk/src/VBox/Runtime/common/asm/ASMAtomicReadU64.asm	(revision 25663)
+++ /trunk/src/VBox/Runtime/common/asm/ASMAtomicReadU64.asm	(revision 25664)
@@ -45,7 +45,14 @@
 ;
 BEGINPROC_EXPORTED ASMAtomicReadU64
-%ifndef RT_ARCH_X86
- %error port me
+%ifdef RT_ARCH_AMD64
+        mfence                          ; ASSUME its present.
+ %ifdef ASM_CALL64_MSC
+        mov     rax, [rcx]
+ %else
+        mov     rax, [rdi]
+ %endif
+        ret
 %endif
+%ifdef RT_ARCH_X86
         push    ebp
         mov     ebp, esp
@@ -64,4 +71,5 @@
         leave
         ret
+%endif
 ENDPROC ASMAtomicReadU64
 
