Pārlūkot izejas kodu

* fixed InterlockedCompareExchange

git-svn-id: trunk@3947 -
Jonas Maebe 19 gadi atpakaļ
vecāks
revīzija
b9125f97d0
1 mainītis faili ar 5 papildinājumiem un 4 dzēšanām
  1. 5 4
      rtl/i386/i386.inc

+ 5 - 4
rtl/i386/i386.inc

@@ -1176,13 +1176,14 @@ end;
 function InterlockedCompareExchange(var Target: longint; NewValue: longint; Comperand: longint): longint; assembler;
 asm
 {$ifdef REGCALL}
-        xchgl   %eax,%edx
+        xchgl   %eax,%ecx
 {$else}
-        movl    Target,%edx
-        movl    NewValue,%eax
+        movl    Target,%ecx
+        movl    NewValue,%edx
+        movl    Comparand,%eax
 {$endif}
         lock
-        cmpxchgl   %eax, (%edx)
+        cmpxchgl   %edx, (%ecx)
 end;