Browse Source

* fixed InterlockedCompareExchange(64) of x86_64.inc for win64 too

git-svn-id: trunk@6798 -
florian 18 years ago
parent
commit
87bc8a4471
1 changed files with 4 additions and 4 deletions
  1. 4 4
      rtl/x86_64/x86_64.inc

+ 4 - 4
rtl/x86_64/x86_64.inc

@@ -482,9 +482,9 @@ end;
 function InterLockedCompareExchange(var Target: longint; NewValue, Comperand : longint): longint; assembler;
 asm
 {$ifdef win64}
-        movl            %edx,%eax
+        movl            %r8d,%eax
         lock
-        cmpxchgl        %r8d,(%rcx)
+        cmpxchgl        %edx,(%rcx)
 {$else win64}
         movl            %edx,%eax
         lock
@@ -554,9 +554,9 @@ end;
 function InterLockedCompareExchange64(var Target: int64; NewValue, Comperand : int64): int64; assembler;
 asm
 {$ifdef win64}
-        movq            %rdx,%rax
+        movq            %r8,%rax
         lock
-        cmpxchgq        %r8d,(%rcx)
+        cmpxchgq        %rdx,(%rcx)
 {$else win64}
         movq            %rdx,%rax
         lock