소스 검색

* fixed InterlockedCompareExchange

git-svn-id: trunk@3947 -
Jonas Maebe 19 년 전
부모
커밋
b9125f97d0
1개의 변경된 파일5개의 추가작업 그리고 4개의 파일을 삭제
  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;