浏览代码

* fixed return value of InterlockedCompareExchange(64) for ppc/ppc64,
bug exposed by tw13281

git-svn-id: trunk@13133 -

Jonas Maebe 16 年之前
父节点
当前提交
a24db8854c
共有 2 个文件被更改,包括 3 次插入3 次删除
  1. 1 1
      rtl/powerpc/powerpc.inc
  2. 2 2
      rtl/powerpc64/powerpc64.inc

+ 1 - 1
rtl/powerpc/powerpc.inc

@@ -1174,7 +1174,7 @@ asm
   or     r6,r7,r8
   stwcx. r6,0,r3
   bne .LInterlockedCompareExchangeLoop
-  mr     r3, r6
+  mr     r3, r10
 end;
 
 {$IFDEF MORPHOS}

+ 2 - 2
rtl/powerpc64/powerpc64.inc

@@ -682,7 +682,7 @@ asm
   or     r6,r7,r8
   stwcx. r6,0,r3
   bne .LInterlockedCompareExchangeLoop
-  mr     r3, r6
+  mr     r3, r10
 end;
 
 function InterLockedDecrement64(var Target: Int64) : Int64; assembler; nostackframe;
@@ -754,7 +754,7 @@ asm
   or     r6,r7,r8
   stdcx. r6,0,r3
   bne .LInterlockedCompareExchangeLoop
-  mr     r3, r6
+  mr     r3, r10
 end;
 
 {$ifndef FPC_SYSTEM_HAS_MEM_BARRIER}