mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-01 23:50:23 +02:00
* i386: make use of *fence instructions
This commit is contained in:
parent
01ae235676
commit
0d03cad279
@ -1498,9 +1498,12 @@ end;
|
|||||||
|
|
||||||
procedure ReadBarrier;assembler;nostackframe;
|
procedure ReadBarrier;assembler;nostackframe;
|
||||||
asm
|
asm
|
||||||
|
{$ifdef CPUX86_HAS_SSE2}
|
||||||
|
lfence
|
||||||
|
{$else CPUX86_HAS_SSE2}
|
||||||
lock
|
lock
|
||||||
addl $0,0(%esp)
|
addl $0,0(%esp)
|
||||||
{ alternative: lfence on SSE capable CPUs }
|
{$endif CPUX86_HAS_SSE2}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure ReadDependencyBarrier;{$ifdef SYSTEMINLINE}inline;{$endif}
|
procedure ReadDependencyBarrier;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
@ -1510,14 +1513,19 @@ end;
|
|||||||
|
|
||||||
procedure ReadWriteBarrier;assembler;nostackframe;
|
procedure ReadWriteBarrier;assembler;nostackframe;
|
||||||
asm
|
asm
|
||||||
|
{$ifdef CPUX86_HAS_SSE2}
|
||||||
|
mfence
|
||||||
|
{$else CPUX86_HAS_SSE2}
|
||||||
lock
|
lock
|
||||||
addl $0,0(%esp)
|
addl $0,0(%esp)
|
||||||
{ alternative: mfence on SSE capable CPUs }
|
{$endif CPUX86_HAS_SSE2}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure WriteBarrier;assembler;nostackframe;
|
procedure WriteBarrier;assembler;nostackframe;
|
||||||
asm
|
asm
|
||||||
{ no write reordering on intel CPUs (yet) }
|
{$ifdef CPUX86_HAS_SSEUNIT}
|
||||||
|
sfence
|
||||||
|
{$endif CPUX86_HAS_SSEUNIT}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$endif}
|
{$endif}
|
||||||
|
Loading…
Reference in New Issue
Block a user