浏览代码

* optimized ppc memory barrier implementations

git-svn-id: trunk@14803 -
Jonas Maebe 15 年之前
父节点
当前提交
a527b6b2b4
共有 2 个文件被更改,包括 11 次插入7 次删除
  1. 3 2
      rtl/powerpc/powerpc.inc
  2. 8 5
      rtl/powerpc64/powerpc64.inc

+ 3 - 2
rtl/powerpc/powerpc.inc

@@ -1208,7 +1208,7 @@ end;
 
 
 procedure ReadBarrier;assembler;nostackframe;{$ifdef SYSTEMINLINE}inline;{$endif}
 procedure ReadBarrier;assembler;nostackframe;{$ifdef SYSTEMINLINE}inline;{$endif}
 asm
 asm
-  sync
+  isync
 end;
 end;
 
 
 procedure ReadDependencyBarrier;{$ifdef SYSTEMINLINE}inline;{$endif}
 procedure ReadDependencyBarrier;{$ifdef SYSTEMINLINE}inline;{$endif}
@@ -1218,7 +1218,8 @@ end;
 
 
 procedure ReadWriteBarrier;assembler;nostackframe;{$ifdef SYSTEMINLINE}inline;{$endif}
 procedure ReadWriteBarrier;assembler;nostackframe;{$ifdef SYSTEMINLINE}inline;{$endif}
 asm
 asm
-  sync
+  isync
+  eieio
 end;
 end;
 
 
 procedure WriteBarrier;assembler;nostackframe;{$ifdef SYSTEMINLINE}inline;{$endif}
 procedure WriteBarrier;assembler;nostackframe;{$ifdef SYSTEMINLINE}inline;{$endif}

+ 8 - 5
rtl/powerpc64/powerpc64.inc

@@ -762,9 +762,7 @@ end;
 
 
 procedure ReadBarrier;assembler;nostackframe;{$ifdef SYSTEMINLINE}inline;{$endif}
 procedure ReadBarrier;assembler;nostackframe;{$ifdef SYSTEMINLINE}inline;{$endif}
 asm
 asm
-{$ifdef FPC_HAS_LWSYNC}
-  lwsync
-{$endif}
+  isync
 end;
 end;
 
 
 procedure ReadDependencyBarrier;{$ifdef SYSTEMINLINE}inline;{$endif}
 procedure ReadDependencyBarrier;{$ifdef SYSTEMINLINE}inline;{$endif}
@@ -774,12 +772,17 @@ end;
 
 
 procedure ReadWriteBarrier;assembler;nostackframe;{$ifdef SYSTEMINLINE}inline;{$endif}
 procedure ReadWriteBarrier;assembler;nostackframe;{$ifdef SYSTEMINLINE}inline;{$endif}
 asm
 asm
-  sync
+  isync
+{$ifdef FPC_HAS_LWSYNC}
+  lwsync
+{$endif}
 end;
 end;
 
 
 procedure WriteBarrier;assembler;nostackframe;{$ifdef SYSTEMINLINE}inline;{$endif}
 procedure WriteBarrier;assembler;nostackframe;{$ifdef SYSTEMINLINE}inline;{$endif}
 asm
 asm
-  eieio
+{$ifdef FPC_HAS_LWSYNC}
+  lwsync
+{$endif}
 end;
 end;
 
 
 {$endif}
 {$endif}