summaryrefslogtreecommitdiff
path: root/rtl/m68k
diff options
context:
space:
mode:
authormarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2015-06-17 07:45:51 +0000
committermarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2015-06-17 07:45:51 +0000
commit98b815edf9027e025d8fa473b90cef6030b85b55 (patch)
tree0ca3c68bffa7a46f6acef39b8bc019376062c16a /rtl/m68k
parent8aa44ee43cdae24a2f557b5e6084287da72eac64 (diff)
downloadfpc-98b815edf9027e025d8fa473b90cef6030b85b55.tar.gz
--- Merging r29614 into '.':
U rtl/amiga/Makefile.fpc U rtl/amiga/Makefile --- Recording mergeinfo for merge of r29614 into '.': U . --- Merging r29643 into '.': G rtl/amiga/Makefile G rtl/amiga/Makefile.fpc --- Recording mergeinfo for merge of r29643 into '.': G . --- Merging r29754 into '.': U packages/arosunits/src/exec.pas U packages/arosunits/src/amigados.pas --- Recording mergeinfo for merge of r29754 into '.': G . --- Merging r30060 into '.': U rtl/m68k/m68k.inc --- Recording mergeinfo for merge of r30060 into '.': G . --- Merging r30092 into '.': U packages/amunits/src/otherlibs/mui.pas --- Recording mergeinfo for merge of r30092 into '.': G . --- Merging r30355 into '.': U rtl/morphos/system.pp --- Recording mergeinfo for merge of r30355 into '.': G . --- Merging r30356 into '.': U rtl/amicommon/sysheap.inc U rtl/amiga/system.pp --- Recording mergeinfo for merge of r30356 into '.': G . --- Merging r30358 into '.': U rtl/amicommon/dos.pp U rtl/amicommon/sysutils.pp --- Recording mergeinfo for merge of r30358 into '.': G . --- Merging r30536 into '.': U packages/amunits/src/coreunits/agraphics.pas U packages/morphunits/src/agraphics.pas --- Recording mergeinfo for merge of r30536 into '.': G . --- Merging r30537 into '.': G packages/morphunits/src/agraphics.pas G packages/amunits/src/coreunits/agraphics.pas U packages/amunits/src/otherlibs/render.pas U packages/amunits/src/utilunits/doublebuffer.pas --- Recording mergeinfo for merge of r30537 into '.': G . --- Merging r30538 into '.': U packages/rtl-console/src/amicommon/video.pp --- Recording mergeinfo for merge of r30538 into '.': G . --- Merging r30539 into '.': G packages/rtl-console/src/amicommon/video.pp --- Recording mergeinfo for merge of r30539 into '.': G . # revisions: 29614,29643,29754,30060,30092,30355,30356,30358,30536,30537,30538,30539 git-svn-id: http://svn.freepascal.org/svn/fpc/branches/fixes_3_0@31075 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'rtl/m68k')
-rw-r--r--rtl/m68k/m68k.inc48
1 files changed, 48 insertions, 0 deletions
diff --git a/rtl/m68k/m68k.inc b/rtl/m68k/m68k.inc
index 57349b8ea4..a8ec3220df 100644
--- a/rtl/m68k/m68k.inc
+++ b/rtl/m68k/m68k.inc
@@ -29,6 +29,54 @@
{****************************************************************************}
+{ 68881/2 FPCR Encodings
+ Rounding Mode Rounding Precision
+ (RND Field) Encoding (PREC Field)
+ To Nearest (RN) 0 0 Extend (X)
+ To Zero (RZ) 0 1 Single (S)
+ To Minus Infinity (RM) 1 0 Double (D)
+ To Plus Infinity (RP) 1 1 Undefined
+}
+
+{ 68881/2 FPCR layout }
+{ Exception Enable Byte: }
+{ 15 - BSUN - Branch/Set on Unordered }
+{ 14 - SNAN - Signal Not A Number }
+{ 13 - OPERR - Operand Error }
+{ 12 - OVFL - Overflow }
+{ 11 - UNFL - Underflow }
+{ 10 - DZ - Divide by Zero }
+{ 09 - INEX2 - Inexact Operation }
+{ 08 - INEX1 - Inexact Decimal Input }
+{ Mode Control Byte: }
+{ 07 - PREC - Rounding Precision }
+{ 06 - PREC - Rounding Precision }
+{ 05 - RND - Rounding Mode }
+{ 04 - RND - Rounding Mode }
+{ 03 - 0 - Reserved, Set to zero }
+{ 02 - 0 - Reserved, Set to zero }
+{ 01 - 0 - Reserved, Set to zero }
+{ 00 - 0 - Reserved, Set to zero }
+
+
+{$IFNDEF FPU_SOFT}
+{$DEFINE FPC_SYSTEM_HAS_SYSRESETFPU}
+procedure SysResetFPU; assembler;
+asm
+ clr.l d0
+ fmove.l d0,fpcr
+end;
+
+{$DEFINE FPC_SYSTEM_HAS_SYSINITFPU}
+procedure SysInitFPU; assembler;
+asm
+ clr.l d0
+ // FIX ME:
+ // move.w 0,d0 // enable a sane set of exception flags here
+ fmove.l d0,fpcr
+end;
+{$ENDIF}
+
procedure fpc_cpuinit;
begin
SysResetFPU;