Bladeren bron

+ basemath for i8086

florian 1 jaar geleden
bovenliggende
commit
c30bded513
2 gewijzigde bestanden met toevoegingen van 70 en 58 verwijderingen
  1. 70 0
      rtl/i8086/basemath.inc
  2. 0 58
      rtl/i8086/mathu.inc

+ 70 - 0
rtl/i8086/basemath.inc

@@ -0,0 +1,70 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 1999-2003 by Florian Klaempfl
+    member of the Free Pascal development team
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+**********************************************************************}
+
+function GetRoundMode: TFPURoundingMode;
+begin
+  Result := TFPURoundingMode((Get8087CW shr 10) and 3);
+end;
+
+
+function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
+var
+  CtlWord: Word;
+begin
+  softfloat_rounding_mode:=RoundMode;
+  CtlWord := Get8087CW;
+  Set8087CW((CtlWord and $F3FF) or (Ord(RoundMode) shl 10));
+{  if has_sse_support then
+    SetSSECSR((GetSSECSR and $ffff9fff) or (dword(RoundMode) shl 13));}
+  Result := TFPURoundingMode((CtlWord shr 10) and 3);
+end;
+
+function GetPrecisionMode: TFPUPrecisionMode;
+begin
+  Result := TFPUPrecisionMode((Get8087CW shr 8) and 3);
+end;
+
+function SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode;
+var
+  CtlWord: Word;
+begin
+  CtlWord := Get8087CW;
+  Set8087CW((CtlWord and $FCFF) or (Ord(Precision) shl 8));
+  Result := TFPUPrecisionMode((CtlWord shr 8) and 3);
+end;
+
+function GetExceptionMask: TFPUExceptionMask;
+begin
+  Result := TFPUExceptionMask(Byte(Get8087CW and $3F));
+end;
+
+function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
+var
+  CtlWord: Word;
+begin
+  CtlWord := Get8087CW;
+  Set8087CW( (CtlWord and $FFC0) or Byte(Mask) );
+{  if has_sse_support then
+    SetSSECSR((GetSSECSR and $ffffe07f) or (dword(Mask) shl 7));}
+  Result := TFPUExceptionMask(Byte(CtlWord and $3F));
+end;
+
+procedure ClearExceptions(RaisePending: Boolean);assembler;
+asm
+  cmp byte RaisePending, 0
+  je @Lclear
+  fwait
+@Lclear:
+  fnclex
+end;

+ 0 - 58
rtl/i8086/mathu.inc

@@ -143,61 +143,3 @@ asm
   movl %edx,(%ecx)
   popl %edi
 end;}
-
-
-function GetRoundMode: TFPURoundingMode;
-begin
-  Result := TFPURoundingMode((Get8087CW shr 10) and 3);
-end;
-
-
-function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
-var
-  CtlWord: Word;
-begin
-  softfloat_rounding_mode:=RoundMode;
-  CtlWord := Get8087CW;
-  Set8087CW((CtlWord and $F3FF) or (Ord(RoundMode) shl 10));
-{  if has_sse_support then
-    SetSSECSR((GetSSECSR and $ffff9fff) or (dword(RoundMode) shl 13));}
-  Result := TFPURoundingMode((CtlWord shr 10) and 3);
-end;
-
-function GetPrecisionMode: TFPUPrecisionMode;
-begin
-  Result := TFPUPrecisionMode((Get8087CW shr 8) and 3);
-end;
-
-function SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode;
-var
-  CtlWord: Word;
-begin
-  CtlWord := Get8087CW;
-  Set8087CW((CtlWord and $FCFF) or (Ord(Precision) shl 8));
-  Result := TFPUPrecisionMode((CtlWord shr 8) and 3);
-end;
-
-function GetExceptionMask: TFPUExceptionMask;
-begin
-  Result := TFPUExceptionMask(Byte(Get8087CW and $3F));
-end;
-
-function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
-var
-  CtlWord: Word;
-begin
-  CtlWord := Get8087CW;
-  Set8087CW( (CtlWord and $FFC0) or Byte(Mask) );
-{  if has_sse_support then
-    SetSSECSR((GetSSECSR and $ffffe07f) or (dword(Mask) shl 7));}
-  Result := TFPUExceptionMask(Byte(CtlWord and $3F));
-end;
-
-procedure ClearExceptions(RaisePending: Boolean);assembler;
-asm
-  cmp byte RaisePending, 0
-  je @Lclear
-  fwait
-@Lclear:
-  fnclex
-end;