|
@@ -292,18 +292,21 @@ procedure ReadDependencyBarrier;
|
|
begin
|
|
begin
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+
|
|
procedure ReadWriteBarrier; assembler; nostackframe;
|
|
procedure ReadWriteBarrier; assembler; nostackframe;
|
|
asm
|
|
asm
|
|
fence iorw, iorw
|
|
fence iorw, iorw
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+
|
|
procedure WriteBarrier; assembler; nostackframe;
|
|
procedure WriteBarrier; assembler; nostackframe;
|
|
asm
|
|
asm
|
|
fence ow, ow
|
|
fence ow, ow
|
|
end;
|
|
end;
|
|
|
|
|
|
-{$define FPC_SYSTEM_HAS_SYSRESETFPU}
|
|
|
|
-procedure SysResetFPU;{$ifdef SYSTEMINLINE}inline;{$endif}
|
|
|
|
|
|
+
|
|
|
|
+{$define FPC_SYSTEM_HAS_SYSINITFPU}
|
|
|
|
+procedure SysInitFPU;
|
|
{$ifdef FPUFD}
|
|
{$ifdef FPUFD}
|
|
var
|
|
var
|
|
cw: TNativeFPUControlWord;
|
|
cw: TNativeFPUControlWord;
|
|
@@ -321,3 +324,21 @@ begin
|
|
SetNativeFPUControlWord(cw);
|
|
SetNativeFPUControlWord(cw);
|
|
{$endif}
|
|
{$endif}
|
|
end;
|
|
end;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+{$define FPC_SYSTEM_HAS_SYSRESETFPU}
|
|
|
|
+Procedure SysResetFPU;
|
|
|
|
+{$ifdef FPUFD}
|
|
|
|
+var
|
|
|
|
+ cw: TNativeFPUControlWord;
|
|
|
|
+{$endif}
|
|
|
|
+begin
|
|
|
|
+ softfloat_exception_flags:=[];
|
|
|
|
+ softfloat_exception_mask:=[exPrecision,exUnderflow];
|
|
|
|
+{$ifdef FPUFD}
|
|
|
|
+ { clear all "exception happened" flags we care about}
|
|
|
|
+ cw:=GetNativeFPUControlWord;
|
|
|
|
+ cw.cw:=0;
|
|
|
|
+ SetNativeFPUControlWord(cw);
|
|
|
|
+{$endif FPUFD}
|
|
|
|
+end;
|