Selaa lähdekoodia

+ intrinsics unit for i386

florian 2 viikkoa sitten
vanhempi
sitoutus
18e3f4a11c

+ 1 - 1
rtl/android/Makefile

@@ -944,7 +944,7 @@ ifeq ($(ARCH),x86_64)
 CPU_UNITS+=$(INTRINSICSUNIT)
 endif
 ifeq ($(ARCH),i386)
-CPU_UNITS+=$(MMXUNIT)
+CPU_UNITS+=$(MMXUNIT) $(INTRINSICSUNIT)
 endif
 ifeq ($(ARCH),aarch64)
 CPU_UNITS+=$(INTRINSICSUNIT)

+ 1 - 1
rtl/android/Makefile.fpc

@@ -82,7 +82,7 @@ ifeq ($(ARCH),x86_64)
 CPU_UNITS+=$(INTRINSICSUNIT)
 endif
 ifeq ($(ARCH),i386)
-CPU_UNITS+=$(MMXUNIT)
+CPU_UNITS+=$(MMXUNIT) $(INTRINSICSUNIT)
 endif
 ifeq ($(ARCH),aarch64)
 CPU_UNITS+=$(INTRINSICSUNIT)

+ 1 - 1
rtl/aros/Makefile

@@ -927,7 +927,7 @@ ifeq ($(ARCH),arm)
 CPU_UNITS=$(INTRINSICSUNIT)
 endif
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(CPUUNIT) $(MMXUNIT) $(LINEINFOUNIT)
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT) $(LINEINFOUNIT) $(INTRINSICSUNIT)
 endif
 ifeq ($(ARCH),x86_64)
 CPU_UNITS=$(CPUUNIT) $(INTRINSICSUNIT)

+ 1 - 1
rtl/aros/Makefile.fpc

@@ -52,7 +52,7 @@ CPU_UNITS=$(INTRINSICSUNIT)
 endif
 
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(CPUUNIT) $(MMXUNIT) $(LINEINFOUNIT)
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT) $(LINEINFOUNIT) $(INTRINSICSUNIT)
 endif
 
 ifeq ($(ARCH),x86_64)

+ 1 - 1
rtl/beos/Makefile

@@ -928,7 +928,7 @@ DYNLIBSINCDIR=$(UNIXINC)
 override FPCOPT+= -dHASUNIX -n -dFPC_USE_LIBC -Si
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(CPU_OS_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(BASEUNIXUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(ERRORSUNIT) $(DOSUNIT) $(DLUNIT) $(CTHREADSUNIIT) $(SYSCONSTUNIT) $(SYSUTILSUNIT) $(TYPESUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(TYPINFOUNIT)  $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MATHUNIT) $(CPUUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(RTLCONSTSUNIT) $(SYSCALLUNIT) $(UNIXUNIT) $(UNIXUTILUNIT) $(TERMIOUNIT) $(INITCUNIT) $(UNIXCPUNIT)  $(CHARACTERUNIT) $(FPWIDESTRINGUNIT) $(CMEMUNIT) $(DYNLIBSUNIT) $(CWSTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU218UNIT)  $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(BASEUNIXUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(ERRORSUNIT) $(DOSUNIT) $(DLUNIT) $(CTHREADSUNIIT) $(SYSCONSTUNIT) $(SYSUTILSUNIT) $(TYPESUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(TYPINFOUNIT)  $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MATHUNIT) $(CPUUNIT) $(MMXUNIT) $(INTRINSICS) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(RTLCONSTSUNIT) $(SYSCALLUNIT) $(UNIXUNIT) $(UNIXUTILUNIT) $(TERMIOUNIT) $(INITCUNIT) $(UNIXCPUNIT)  $(CHARACTERUNIT) $(FPWIDESTRINGUNIT) $(CMEMUNIT) $(DYNLIBSUNIT) $(CWSTRINGUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU218UNIT)  $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-beos)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)

+ 3 - 3
rtl/beos/Makefile.fpc

@@ -8,10 +8,10 @@ main=rtl
 [target]
 loaders=prt0 cprt0 func dllprt
 units=$(SYSTEMUNIT) $(UUCHARUNIT) $(BASEUNIXUNIT) $(UNIXTYPEUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
-      $(ERRORSUNIT) $(DOSUNIT) $(DLUNIT) $(CTHREADSUNIIT) \ 
+      $(ERRORSUNIT) $(DOSUNIT) $(DLUNIT) $(CTHREADSUNIIT) \
       $(SYSCONSTUNIT) $(SYSUTILSUNIT) \
       $(TYPESUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(TYPINFOUNIT)  $(SORTBASEUNIT) $(CLASSESUNIT) $(FGLUNIT) $(MATHUNIT) \
-      $(CPUUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) \
+      $(CPUUNIT) $(MMXUNIT) $(INTRINSICS) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) \
       $(RTLCONSTSUNIT) $(SYSCALLUNIT) $(UNIXUNIT) $(UNIXUTILUNIT) $(TERMIOUNIT) $(INITCUNIT) \
       $(UNIXCPUNIT)  $(CHARACTERUNIT) $(FPWIDESTRINGUNIT) \
       $(CMEMUNIT) \
@@ -33,7 +33,7 @@ cpu=i386
 
 [compiler]
 includedir=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) $(OSPROCINC)
-sourcedir=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET) 
+sourcedir=$(INC) $(PROCINC) $(UNIXINC) $(CPU_TARGET)
 targetdir=.
 
 [lib]

+ 1 - 1
rtl/darwin/Makefile

@@ -914,7 +914,7 @@ else
 CP_UNITS_SRC=$(addsuffix .pas,$(addprefix $(RTL)/charmaps/,$(CP_UNITS)))
 endif
 ifeq ($(CPU_TARGET),i386)
-CPU_UNITS=$(MMXUNIT) $(CPUUNIT)
+CPU_UNITS=$(MMXUNIT) $(CPUUNIT) $(INTRINSICSUNIT)
 endif
 ifeq ($(ARCH),x86_64)
 CPU_UNITS=$(CPUUNIT) $(INTRINSICSUNIT)

+ 1 - 1
rtl/darwin/Makefile.fpc

@@ -48,7 +48,7 @@ libunits=$(SYSTEMUNIT) $(OBJPASUNIT) $(STRINGSUNIT) \
 
 [prerules]
 ifeq ($(CPU_TARGET),i386)
-CPU_UNITS=$(MMXUNIT) $(CPUUNIT)
+CPU_UNITS=$(MMXUNIT) $(CPUUNIT) $(INTRINSICSUNIT)
 endif
 
 ifeq ($(ARCH),x86_64)

+ 1 - 1
rtl/embedded/Makefile

@@ -1083,7 +1083,7 @@ $(error No CPUs enabled for given SUBARCH, pass either a SUBARCH or set CPU_UNIT
 endif
 endif
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(MULTIBOOTUNIT)
+CPU_UNITS=$(MULTIBOOTUNIT) $(INTRINSICSUNIT)
 CPU_UNITS_DEFINED=1
 ifeq ($(CPU_UNITS_DEFINED),)
 $(error No CPUs enabled for given SUBARCH, pass either a SUBARCH or set CPU_UNITS_DEFINED=1 if you know what you are doing)

+ 1 - 1
rtl/embedded/Makefile.fpc

@@ -218,7 +218,7 @@ endif
 endif
 
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(MULTIBOOTUNIT)
+CPU_UNITS=$(MULTIBOOTUNIT) $(INTRINSICSUNIT)
 CPU_UNITS_DEFINED=1
 ifeq ($(CPU_UNITS_DEFINED),)
 $(error No CPUs enabled for given SUBARCH, pass either a SUBARCH or set CPU_UNITS_DEFINED=1 if you know what you are doing)

+ 1 - 1
rtl/emx/Makefile

@@ -931,7 +931,7 @@ SYSTEMUNITEXT=pas
 DOSUNITEXT=pas
 PORTSUNITEXT=pas
 ifeq ($(CPU_OS_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(PORTSUNIT) $(OS2DEFUNIT) $(DOSCALLSUNIT) $(DOSCALL2UNIT) $(KBDCALLSUNIT) $(MOUCALLSUNIT) $(VIOCALLSUNIT) $(SO32DLLUNIT) $(PMBITMAPUNIT) $(PMWINUNIT) $(PMGPIUNIT) $(PMSTDDLGUNIT) $(PMHELPUNIT) $(PMDEVUNIT) $(PMSPLUNIT) $(PMSHLUNIT) $(PMWPUNIT) $(PMWSOCKUNIT) $(PMBIDI) $(DOSUNIT) $(SUSITILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CPUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT)       $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(PORTSUNIT) $(OS2DEFUNIT) $(DOSCALLSUNIT) $(DOSCALL2UNIT) $(KBDCALLSUNIT) $(MOUCALLSUNIT) $(VIOCALLSUNIT) $(SO32DLLUNIT) $(PMBITMAPUNIT) $(PMWINUNIT) $(PMGPIUNIT) $(PMSTDDLGUNIT) $(PMHELPUNIT) $(PMDEVUNIT) $(PMSPLUNIT) $(PMSHLUNIT) $(PMWPUNIT) $(PMWSOCKUNIT) $(PMBIDI) $(DOSUNIT) $(SUSITILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CPUNIT) $(MMXUNIT) $(INTRINSICS) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT)       $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-emx)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)

+ 1 - 1
rtl/emx/Makefile.fpc

@@ -14,7 +14,7 @@ units=$(SYSTEMUNIT) $(UUCHARUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(IS
       $(PMHELPUNIT) $(PMDEVUNIT) $(PMSPLUNIT) $(PMSHLUNIT) $(PMWPUNIT) $(PMWSOCKUNIT) $(PMBIDI) \
       $(DOSUNIT) \
       $(SUSITILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) \
-      $(CHARSETUNIT) $(CPALLUNIT) $(CPUNIT) $(MMXUNIT) $(GETOPTSUNIT) \
+      $(CHARSETUNIT) $(CPALLUNIT) $(CPUNIT) $(MMXUNIT) $(INTRINSICS) $(GETOPTSUNIT) \
       $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(DYNLIBSUNIT) \
       $(TYPESUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) \
       $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) \

+ 1 - 1
rtl/freebsd/Makefile

@@ -936,7 +936,7 @@ SYSUTILSDIR=$(UNIXINC)
 SYSUTILS_DEPS_OS = $(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT)
 loaders+=gprt0
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(MMXUNIT)
+CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(MMXUNIT) $(INTRINSICSUNIT)
 ASTARGET=--32
 endif
 ifeq ($(ARCH),x86_64)

+ 1 - 1
rtl/freebsd/Makefile.fpc

@@ -76,7 +76,7 @@ SYSUTILS_DEPS_OS = $(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT)
 loaders+=gprt0
 
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(MMXUNIT)
+CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(MMXUNIT) $(INTRINSICSUNIT)
 ASTARGET=--32
 endif
 

+ 1 - 1
rtl/go32v2/Makefile

@@ -933,7 +933,7 @@ ifdef NO_EXCEPTIONS_IN_SYSTEM
 override FPCOPT+=-dNO_EXCEPTIONS_IN_SYSTEM
 endif
 ifeq ($(CPU_OS_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(GO32UNIT) $(DPMIEXCPUNIT) $(INITCUNIT) $(PORTSUNIT) $(PROFILEUNIT) $(DXETYPEUNIT) $(DXELOADUNIT) $(EMU387UNIT) $(DOSUNIT) $(CMEMUNIT) $(SORTBASEUNIT) $(SYSUTILSUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(CPUUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(CTYPESUNIT) $(FGLUNIT) $(MSMOUSEUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(FPWIDESTRINGUNIT) $(UNICODEDATAUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(GO32UNIT) $(DPMIEXCPUNIT) $(INITCUNIT) $(PORTSUNIT) $(PROFILEUNIT) $(DXETYPEUNIT) $(DXELOADUNIT) $(EMU387UNIT) $(DOSUNIT) $(CMEMUNIT) $(SORTBASEUNIT) $(SYSUTILSUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(CPUUNIT) $(MMXUNIT) $(INTRINSICS) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(CTYPESUNIT) $(FGLUNIT) $(MSMOUSEUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CHARACTERUNIT) $(FPWIDESTRINGUNIT) $(UNICODEDATAUNIT) $(TYPESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-go32v2)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS)

+ 1 - 1
rtl/go32v2/Makefile.fpc

@@ -9,7 +9,7 @@ units=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(E
       $(GO32UNIT) $(DPMIEXCPUNIT) $(INITCUNIT) $(PORTSUNIT) $(PROFILEUNIT) $(DXETYPEUNIT) $(DXELOADUNIT) $(EMU387UNIT) \
       $(DOSUNIT) $(CMEMUNIT) $(SORTBASEUNIT) \
       $(SYSUTILSUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) \
-      $(CPUUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(CTYPESUNIT) $(FGLUNIT) \
+      $(CPUUNIT) $(MMXUNIT) $(INTRINSICS) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(CTYPESUNIT) $(FGLUNIT) \
       $(MSMOUSEUNIT) $(CHARSETUNIT) $(CPALLUNIT) \
       $(CHARACTERUNIT) $(FPWIDESTRINGUNIT) $(UNICODEDATAUNIT) \
       $(TYPESUNIT) $(SYSCONSTUNIT) $(RTLCONSTSUNIT) \

+ 1 - 1
rtl/haiku/Makefile

@@ -926,7 +926,7 @@ DYNLIBSINCDIR=$(UNIXINC)
 TTHREADINCDIR=$(UNIXINC)
 ifeq ($(ARCH),i386)
 LOADERS=cprt0 dllcprt0
-CPU_UNITS=$(CPUUNIT) $(MMXUNIT)
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT) $(INTRINSICS)
 endif
 ifeq ($(ARCH),x86_64)
 LOADERS=

+ 1 - 1
rtl/haiku/Makefile.fpc

@@ -61,7 +61,7 @@ TTHREADINCDIR=$(UNIXINC)
 
 ifeq ($(ARCH),i386)
 LOADERS=cprt0 dllcprt0
-CPU_UNITS=$(CPUUNIT) $(MMXUNIT)
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT) $(INTRINSICS)
 endif
 
 ifeq ($(ARCH),x86_64)

+ 11 - 24
rtl/i386/cpuh.inc

@@ -14,8 +14,13 @@
 
  **********************************************************************}
 
+type
+  TNativeFPUControlWord = record
+    cw8087: word;
+    MXCSR: dword;
+  end;
+
 const
-  {$I cpuinnr.inc}
   { Always i386 or newer }
   Test8086 : byte = 2;
   { Always 387 or newer. Emulated if needed. }
@@ -28,30 +33,12 @@ const
   has_avx_support : boolean = false;
   has_avx2_support : boolean = false;
 
-function fpc_x86_inportb(port : word) : byte;[internproc:fpc_in_x86_inportb];
-function fpc_x86_inportw(port : word) : word;[internproc:fpc_in_x86_inportw];
-function fpc_x86_inportl(port : word) : longint;[internproc:fpc_in_x86_inportl];
-procedure fpc_x86_outportb(port : word;data : byte);[internproc:fpc_in_x86_outportb];
-procedure fpc_x86_outportw(port : word;data : word);[internproc:fpc_in_x86_outportw];
-procedure fpc_x86_outportl(port : word;data : longint);[internproc:fpc_in_x86_outportl];
-procedure fpc_x86_cli;[internproc:fpc_in_x86_cli];
-procedure fpc_x86_sti;[internproc:fpc_in_x86_sti];
-function fpc_x86_get_cs:longint;[internproc:fpc_in_x86_get_cs];
-function fpc_x86_get_ss:longint;[internproc:fpc_in_x86_get_ss];
-function fpc_x86_get_ds:longint;[internproc:fpc_in_x86_get_ds];
-function fpc_x86_get_es:longint;[internproc:fpc_in_x86_get_es];
-function fpc_x86_get_fs:longint;[internproc:fpc_in_x86_get_fs];
-function fpc_x86_get_gs:longint;[internproc:fpc_in_x86_get_gs];
-procedure fpc_x86_pause;[internproc:fpc_in_x86_pause];
+{$i cpuinnr.inc}
+
+{$i cpuprocs.inc}
 
-{ include automatically generated procs }
 {$if not defined(VER3_2)}
+{ include automatically generated procs }
 { do not active yet, they are not usable yet neither is the naming fixed }
 { $i cpummprocs.inc}
-{$endif not VER3_2}
-
-type
-  TNativeFPUControlWord = record
-    cw8087: word;
-    MXCSR: dword;
-  end;
+{$endif not VER3_2}

+ 3 - 1
rtl/i386/cpuinnr.inc

@@ -29,4 +29,6 @@
   fpc_in_x86_pause    = fpc_in_cpu_first+14;
 
   { include automatically generated numbers }
-  {$i cpumminnr.inc}  
+  {$ifndef VER3_2}
+  {$i cpumminnr.inc}
+  {$endif}

+ 30 - 0
rtl/i386/cpuprocs.inc

@@ -0,0 +1,30 @@
+{
+    Defines CPU intrinsics for x86-64
+
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2021 by 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 fpc_x86_inportb(port : word) : byte;[internproc:fpc_in_x86_inportb];
+function fpc_x86_inportw(port : word) : word;[internproc:fpc_in_x86_inportw];
+function fpc_x86_inportl(port : word) : longint;[internproc:fpc_in_x86_inportl];
+procedure fpc_x86_outportb(port : word;data : byte);[internproc:fpc_in_x86_outportb];
+procedure fpc_x86_outportw(port : word;data : word);[internproc:fpc_in_x86_outportw];
+procedure fpc_x86_outportl(port : word;data : longint);[internproc:fpc_in_x86_outportl];
+procedure fpc_x86_cli;[internproc:fpc_in_x86_cli];
+procedure fpc_x86_sti;[internproc:fpc_in_x86_sti];
+function fpc_x86_get_cs:longint;[internproc:fpc_in_x86_get_cs];
+function fpc_x86_get_ss:longint;[internproc:fpc_in_x86_get_ss];
+function fpc_x86_get_ds:longint;[internproc:fpc_in_x86_get_ds];
+function fpc_x86_get_es:longint;[internproc:fpc_in_x86_get_es];
+function fpc_x86_get_fs:longint;[internproc:fpc_in_x86_get_fs];
+function fpc_x86_get_gs:longint;[internproc:fpc_in_x86_get_gs];
+procedure fpc_x86_pause;[internproc:fpc_in_x86_pause];

+ 28 - 0
rtl/i386/intrinsics.pp

@@ -0,0 +1,28 @@
+{
+    Provides CPU intrinsics for x86-64
+
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2021 by 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.
+
+ **********************************************************************}
+{$IFNDEF FPC_DOTTEDUNITS}
+unit intrinsics;
+{$ENDIF FPC_DOTTEDUNITS}
+
+  interface
+
+    const
+    {$i cpuinnr.inc}
+
+    {$i cpuprocs.inc}
+
+  implementation
+
+end.

+ 1 - 1
rtl/linux/Makefile

@@ -949,7 +949,7 @@ SYSINIT_UNITS=
 LOADERS=prt0 dllprt0 cprt0 gprt0
 ifeq ($(ARCH),i386)
 override LOADERS=
-CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(MMXUNIT)
+CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(MMXUNIT) $(INTRINSICSUNIT)
 SYSINIT_UNITS=si_prc si_c21g si_c21 si_c si_dll si_uc
 endif
 ifeq ($(ARCH),x86_64)

+ 1 - 1
rtl/linux/Makefile.fpc

@@ -93,7 +93,7 @@ LOADERS=prt0 dllprt0 cprt0 gprt0
 
 ifeq ($(ARCH),i386)
 override LOADERS=
-CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(MMXUNIT)
+CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(MMXUNIT) $(INTRINSICSUNIT)
 SYSINIT_UNITS=si_prc si_c21g si_c21 si_c si_dll si_uc
 endif
 

+ 1 - 1
rtl/msxdos/Makefile.fpc

@@ -15,7 +15,7 @@ units=$(SYSTEMUNIT) si_prc $(UUCHARUNIT) $(OBJPASUNIT) $(ISO7185UNIT) $(STRINGSU
 #      $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(UNICODEDATAUNIT)
 #     $(CMEMUNIT)
 #      $(INITCUNIT) profile dxetype dxeload emu387 \
-#      $(CPUUNIT) $(MMXUNIT) \
+#      $(CPUUNIT) $(MMXUNIT) $(INTRINSICS) \
 #      vesamode \
 # rsts=$(MATHUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(UNICODEDATAUNIT)
 implicitunits= $(CP_UNITS)

+ 1 - 1
rtl/nativent/Makefile

@@ -922,7 +922,7 @@ NDKINC=ndk
 UNITPREFIX=rtl
 CPU_UNITS=
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(CPUUNIT) $(MMXUNIT)
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT) $(INTRINSICS)
 endif
 ifeq ($(ARCH),x86_64)
 CPU_UNITS=$(X86UNIT) $(CPUUNIT)

+ 1 - 1
rtl/nativent/Makefile.fpc

@@ -55,7 +55,7 @@ UNITPREFIX=rtl
 CPU_UNITS=
 
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(CPUUNIT) $(MMXUNIT)
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT) $(INTRINSICS)
 endif
 
 ifeq ($(ARCH),x86_64)

+ 1 - 1
rtl/netbsd/Makefile

@@ -940,7 +940,7 @@ ifeq ($(ARCH),x86_64)
 CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(INTRINSICSUNIT)
 endif
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(MMXUNIT)
+CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(MMXUNIT) $(INTRINSICSUNIT)
 endif
 ifeq ($(ARCH),arm)
 CPU_UNITS=$(INTRINSICSUNIT)

+ 1 - 1
rtl/netbsd/Makefile.fpc

@@ -81,7 +81,7 @@ ifeq ($(ARCH),x86_64)
 CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(INTRINSICSUNIT)
 endif
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(MMXUNIT)
+CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(MMXUNIT) $(INTRINSICSUNIT)
 endif
 ifeq ($(ARCH),arm)
 CPU_UNITS=$(INTRINSICSUNIT)

+ 1 - 1
rtl/netware/Makefile

@@ -938,7 +938,7 @@ requestr.imp socklib.imp streams.imp threads.imp \
 tli.imp vollib.imp ws2_32.imp ws2nlm.imp unicode.imp \
 nwpre.imp
 ifeq ($(CPU_OS_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(DOSUNIT) $(SYSCONSTUNIT) $(INITCUNIT) $(SYSUTILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(CHARSETUNIT) $(CPALLUNIT)  $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(DYNLIBSUNIT) $(CTYPESUNIT)  $(TYPESUNIT) $(RTLCONSTSUNIT) $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(CMEMUNIT) aio nwsnut nwserv nwnit nwprot netware nwcalls nwpre $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT)       $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(DOSUNIT) $(SYSCONSTUNIT) $(INITCUNIT) $(SYSUTILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(CHARSETUNIT) $(CPALLUNIT)  $(MMXUNIT) $(INTRINSICS) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(DYNLIBSUNIT) $(CTYPESUNIT)  $(TYPESUNIT) $(RTLCONSTSUNIT) $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(CMEMUNIT) aio nwsnut nwserv nwnit nwprot netware nwcalls nwpre $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT)       $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-netware)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)

+ 1 - 1
rtl/netware/Makefile.fpc

@@ -10,7 +10,7 @@ loaders=nwpre prelude
 units=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
       $(DOSUNIT) $(SYSCONSTUNIT) \
       $(INITCUNIT) $(SYSUTILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) \
-      $(CHARSETUNIT) $(CPALLUNIT)  $(MMXUNIT) $(GETOPTSUNIT) \
+      $(CHARSETUNIT) $(CPALLUNIT)  $(MMXUNIT) $(INTRINSICS) $(GETOPTSUNIT) \
       $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(DYNLIBSUNIT) \
       $(CTYPESUNIT)  $(TYPESUNIT) $(RTLCONSTSUNIT) \
       $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(CMEMUNIT) \

+ 1 - 1
rtl/netwlibc/Makefile

@@ -926,7 +926,7 @@ CREATESMART=1
 OBJPASDIR=$(RTL)/objpas
 override BINUTILSPREFIX=$(CPU_TARGET)-netware-
 ifeq ($(CPU_OS_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT)  $(HEAPTRCUNIT) nwsnut libc $(DOSUNIT) $(SYSCONSTUNIT) $(INITCUNIT) $(SYSUTILSUNIT) $(TYPESUNIT) $(TYPINFOUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(CPUUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(RTLCONSTSUNIT) $(MATHUNIT) $(DYNLIBSUNIT) $(CMEMUNIT) $(CTYPESUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT)  $(HEAPTRCUNIT) nwsnut libc $(DOSUNIT) $(SYSCONSTUNIT) $(INITCUNIT) $(SYSUTILSUNIT) $(TYPESUNIT) $(TYPINFOUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(CPUUNIT) $(MMXUNIT) $(INTRINSICS) $(GETOPTSUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(RTLCONSTSUNIT) $(MATHUNIT) $(DYNLIBSUNIT) $(CMEMUNIT) $(CTYPESUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT) $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-netwlibc)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS)

+ 1 - 1
rtl/netwlibc/Makefile.fpc

@@ -11,7 +11,7 @@ units=$(SYSTEMUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(E
       $(LINEINFOUNIT) $(LNFODWRFUNIT)  $(HEAPTRCUNIT) \
       nwsnut libc $(DOSUNIT) $(SYSCONSTUNIT) \
       $(INITCUNIT) $(SYSUTILSUNIT) $(TYPESUNIT) $(TYPINFOUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) \
-      $(CPUUNIT) $(MMXUNIT) $(GETOPTSUNIT) \
+      $(CPUUNIT) $(MMXUNIT) $(INTRINSICS) $(GETOPTSUNIT) \
       $(CHARSETUNIT) $(CPALLUNIT) \
       $(RTLCONSTSUNIT) $(MATHUNIT) \
       $(DYNLIBSUNIT) $(CMEMUNIT) $(CTYPESUNIT) \

+ 1 - 1
rtl/openbsd/Makefile

@@ -944,7 +944,7 @@ ifeq ($(ARCH),x86_64)
 CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT)
 endif
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(MMXUNIT)
+CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(MMXUNIT) $(INTRINSICS)
 endif
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(CPU_OS_TARGET),i386-openbsd)

+ 2 - 2
rtl/openbsd/Makefile.fpc

@@ -45,7 +45,7 @@ libunits=$(SYSTEMUNIT) $(OBJPASUNIT) $(STRINGSUNIT) \
       $(UNIXUNIT)  \
       $(DOSUNIT)  \
       $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) \
-      $(CPUUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) \
+      $(CPUUNIT) $(MMXUNIT) $(INTRINSICS) $(GETOPTSUNIT) $(HEAPTRCUNIT) \
       $(ERRORSUNIT)
 
 [prerules]
@@ -87,7 +87,7 @@ ifeq ($(ARCH),x86_64)
 CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT)
 endif
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(MMXUNIT)
+CPU_UNITS=$(X86UNIT) $(PORTSUNIT) $(CPUUNIT) $(MMXUNIT) $(INTRINSICS)
 endif
 
 # Paths

+ 1 - 1
rtl/os2/Makefile

@@ -930,7 +930,7 @@ RTLCONSTSUNIT=rtlconst
 endif
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(CPU_OS_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(PORTSUNIT) $(OS2DEFUNIT) $(DOSCALLSUNIT) $(DOSCALL2UNIT) $(KBDCALLSUNIT) $(MOUCALLSUNIT) $(VIOCALLSUNIT) $(SO32DLLUNIT) $(PMBITMAPUNIT) $(PMWINUNIT) $(PMGPIUNIT) $(PMSTDDLGUNIT) $(PMHELPUNIT) $(PMDEVUNIT) $(PMSPLUNIT) $(PMSHLUNIT) $(PMWPUNIT) $(PMWSOCKUNIT) $(PMBIDI) $(DOSUNIT) $(SUSITILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CPUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT)       $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(PORTSUNIT) $(OS2DEFUNIT) $(DOSCALLSUNIT) $(DOSCALL2UNIT) $(KBDCALLSUNIT) $(MOUCALLSUNIT) $(VIOCALLSUNIT) $(SO32DLLUNIT) $(PMBITMAPUNIT) $(PMWINUNIT) $(PMGPIUNIT) $(PMSTDDLGUNIT) $(PMHELPUNIT) $(PMDEVUNIT) $(PMSPLUNIT) $(PMSHLUNIT) $(PMWPUNIT) $(PMWSOCKUNIT) $(PMBIDI) $(DOSUNIT) $(SUSITILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CPUNIT) $(MMXUNIT) $(INTRINSICS) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(DYNLIBSUNIT) $(TYPESUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT)       $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-os2)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)

+ 1 - 1
rtl/os2/Makefile.fpc

@@ -14,7 +14,7 @@ units=$(SYSTEMUNIT) $(UUCHARUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(IS
       $(PMHELPUNIT) $(PMDEVUNIT) $(PMSPLUNIT) $(PMSHLUNIT) $(PMWPUNIT) $(PMWSOCKUNIT) $(PMBIDI) \
       $(DOSUNIT) \
       $(SUSITILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) \
-      $(CHARSETUNIT) $(CPALLUNIT) $(CPUNIT) $(MMXUNIT) $(GETOPTSUNIT) \
+      $(CHARSETUNIT) $(CPALLUNIT) $(CPUNIT) $(MMXUNIT) $(INTRINSICS) $(GETOPTSUNIT) \
       $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT) $(DYNLIBSUNIT) \
       $(TYPESUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) \
       $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) \

+ 1 - 1
rtl/qnx/Makefile.fpc

@@ -9,7 +9,7 @@ main=rtl
 loaders=cprt0 crti crtn
 units=$(SYSTEMUNIT) $(UUCHARUNIT) $(DOSUNIT) $(OBJPASUNIT) $(STRINGSUNIT) \
       $(SYSUTILSUNIT) $(TYPINFOUNIT) $(MATHUNIT) \
-      $(CPUUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) posix
+      $(CPUUNIT) $(MMXUNIT) $(INTRINSICS) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) posix
 rsts=$(MATHUNIT) $(TYPINFOUNIT)
 
 [require]

+ 1 - 1
rtl/solaris/Makefile

@@ -929,7 +929,7 @@ TERMIO_DEPS_OS=$(UNIXTYPEUNIT)$(PPUEXT)
 SYSUTILSDIR=$(UNIXINC)
 SYSUTILS_DEPS_OS = $(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT)
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(CPUUNIT) $(MMXUNIT)
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT) $(INTRINSICS)
 endif
 ifeq ($(ARCH),x86_64)
 CPU_UNITS=$(CPUUNIT)

+ 1 - 1
rtl/solaris/Makefile.fpc

@@ -69,7 +69,7 @@ SYSUTILS_DEPS_OS = $(UNIXUNIT)$(PPUEXT) $(ERRORSUNIT)$(PPUEXT)
 
 
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(CPUUNIT) $(MMXUNIT)
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT) $(INTRINSICS)
 endif
 
 ifeq ($(ARCH),x86_64)

+ 1 - 1
rtl/symbian/Makefile

@@ -925,7 +925,7 @@ RTLCONSTSUNIT=rtlconst
 endif
 OBJPASDIR=$(RTL)/objpas
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(CPUUNIT) $(MMXUNIT)
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT) $(INTRINSICS)
 endif
 ifeq ($(ARCH),arm)
 CPU_UNITS=$(CPUUNIT) $(INTRINSICSUNIT)

+ 1 - 1
rtl/symbian/Makefile.fpc

@@ -44,7 +44,7 @@ endif
 OBJPASDIR=$(RTL)/objpas
 
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(CPUUNIT) $(MMXUNIT)
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT) $(INTRINSICS)
 endif
 
 ifeq ($(ARCH),arm)

+ 1 - 1
rtl/watcom/Makefile

@@ -929,7 +929,7 @@ override FPCOPT+=-dEXCEPTIONS_IN_SYSTEM
 endif
 override FPCOPT+=-dNO_EXCEPTIONS_IN_SYSTEM
 ifeq ($(CPU_OS_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(WATCOMUNIT) $(DOSUNIT) $(SYSUTILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CPUUNIT) $(MMXUNIT) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT)  $(TYPESUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT)       $(UFLOAT128UNIT)
+override TARGET_UNITS+=$(SYSTEMUNIT) $(UUCHARUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) $(WATCOMUNIT) $(DOSUNIT) $(SYSUTILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) $(CHARSETUNIT) $(CPALLUNIT) $(CPUUNIT) $(MMXUNIT) $(INTRINSICS) $(GETOPTSUNIT) $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT)  $(TYPESUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT)       $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),i386-watcom)
 override TARGET_IMPLICITUNITS+=$(EXEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT)

+ 1 - 1
rtl/watcom/Makefile.fpc

@@ -12,7 +12,7 @@ loaders=prt0
 units=$(SYSTEMUNIT) $(UUCHARUNIT) $(CTYPESUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) $(STRINGSUNIT) \
       $(WATCOMUNIT) $(DOSUNIT) \
       $(SYSUTILSUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(MATHUNIT) $(TYPINFOUNIT) \
-      $(CHARSETUNIT) $(CPALLUNIT) $(CPUUNIT) $(MMXUNIT) $(GETOPTSUNIT) \
+      $(CHARSETUNIT) $(CPALLUNIT) $(CPUUNIT) $(MMXUNIT) $(INTRINSICS) $(GETOPTSUNIT) \
       $(HEAPTRCUNIT) $(LINEINFOUNIT) $(LNFODWRFUNIT)  \
       $(TYPESUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) \
       $(FPWIDESTRINGUNIT) $(CHARACTERUNIT) \

+ 2 - 2
rtl/win32/Makefile

@@ -922,7 +922,7 @@ WINDIR=../win
 NSOSDIR=$(NSDIR)/windows
 UNITPREFIX=rtl
 DLLS=fpcmemdll
-CPU_UNITS=$(CPUUNIT) $(SIGNALSUNIT) $(MMXUNIT)
+CPU_UNITS=$(CPUUNIT) $(SIGNALSUNIT) $(MMXUNIT) $(INTRINSICSUNIT)
 OBJPASDIR=$(RTL)/objpas
 override FPC_SYSTEM_OPT += -Fu$(WINDIR)
 SYSUTILSDIR=$(WINDIR)
@@ -3024,7 +3024,7 @@ BUILDINCLUDEPATHS= -Fi$(OBJPASDIR)/sysutils -Fi$(WINDIR) -Fi$(OBJPASDIR) \
 		   -Fi$(OBJPASDIR)/classes -Fi$(WININC) -Fi$(INC)
 BUILDUNITPATHS=-Fu$(WININC) -Fu$(WINDIR) -Fu$(INC) -Fu$(OBJPASDIR) -Fu../$(ARCH)
 ifdef FPC_DOTTEDUNITS
-BUILDRTL_OPT:=$(BUILDRTL_OPT) -Fu$(NSINC) -Fu$(NSOSDIR) -dFPC_DOTTEDUNITS 
+BUILDRTL_OPT:=$(BUILDRTL_OPT) -Fu$(NSINC) -Fu$(NSOSDIR) -dFPC_DOTTEDUNITS
 endif
 BUILDRTL_DEPS=buildrtl.pp $(SYSTEMUNIT)$(PPUEXT) $(OBJPASUNIT)$(PPUEXT) $(WINDOWSUNIT)$(PPUEXT) $(SYSUTILSUNIT)$(PPUEXT) \
 	      $(BUILDRTL_DEPS_OS) $(BUILDRTL_DEPS_CPU)

+ 2 - 2
rtl/win32/Makefile.fpc

@@ -50,7 +50,7 @@ NSOSDIR=$(NSDIR)/windows
 
 UNITPREFIX=rtl
 DLLS=fpcmemdll
-CPU_UNITS=$(CPUUNIT) $(SIGNALSUNIT) $(MMXUNIT)
+CPU_UNITS=$(CPUUNIT) $(SIGNALSUNIT) $(MMXUNIT) $(INTRINSICSUNIT)
 # Paths
 OBJPASDIR=$(RTL)/objpas
 override FPC_SYSTEM_OPT += -Fu$(WINDIR)
@@ -97,7 +97,7 @@ BUILDINCLUDEPATHS= -Fi$(OBJPASDIR)/sysutils -Fi$(WINDIR) -Fi$(OBJPASDIR) \
 BUILDUNITPATHS=-Fu$(WININC) -Fu$(WINDIR) -Fu$(INC) -Fu$(OBJPASDIR) -Fu../$(ARCH)
 
 ifdef FPC_DOTTEDUNITS
-BUILDRTL_OPT:=$(BUILDRTL_OPT) -Fu$(NSINC) -Fu$(NSOSDIR) -dFPC_DOTTEDUNITS 
+BUILDRTL_OPT:=$(BUILDRTL_OPT) -Fu$(NSINC) -Fu$(NSOSDIR) -dFPC_DOTTEDUNITS
 endif
 
 #

+ 4 - 4
rtl/wince/Makefile

@@ -925,9 +925,9 @@ ifeq ($(ARCH),arm)
 CPU_UNITS=$(INTRINSICSUNIT)
 endif
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(CPUUNIT) $(MMXUNIT)
-CPU_DEPS_CPU=$(SYSUTILSUNIT)$(PPUEXT) 
-MMX_DEPS_CPU=$(CPUUNIT)$(PPUEXT) 
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT) $(INTRINSICS)
+CPU_DEPS_CPU=$(SYSUTILSUNIT)$(PPUEXT)
+MMX_DEPS_CPU=$(CPUUNIT)$(PPUEXT)
 endif
 OBJPASDIR=$(RTL)/objpas
 GRAPHDIR=$(INC)/graph
@@ -937,7 +937,7 @@ WINDOWS_OPT=-Fi$(WININC)
 DOS_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
 SYSUTILSDIR=.
 SYSUTILS_OPT=-Fi../win
-SYSUTILS_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT) 
+SYSUTILS_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
 FPWIDESTRING_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
 TYPES_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
 TTHREADINCDIR=$(WINDIR)

+ 4 - 4
rtl/wince/Makefile.fpc

@@ -58,9 +58,9 @@ ifeq ($(ARCH),arm)
 CPU_UNITS=$(INTRINSICSUNIT)
 endif
 ifeq ($(ARCH),i386)
-CPU_UNITS=$(CPUUNIT) $(MMXUNIT)
-CPU_DEPS_CPU=$(SYSUTILSUNIT)$(PPUEXT) 
-MMX_DEPS_CPU=$(CPUUNIT)$(PPUEXT) 
+CPU_UNITS=$(CPUUNIT) $(MMXUNIT) $(INTRINSICS)
+CPU_DEPS_CPU=$(SYSUTILSUNIT)$(PPUEXT)
+MMX_DEPS_CPU=$(CPUUNIT)$(PPUEXT)
 endif
 
 # Paths
@@ -75,7 +75,7 @@ WINDOWS_OPT=-Fi$(WININC)
 DOS_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
 SYSUTILSDIR=.
 SYSUTILS_OPT=-Fi../win
-SYSUTILS_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT) 
+SYSUTILS_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
 FPWIDESTRING_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
 TYPES_DEPS_OS=$(WINDOWSUNIT)$(PPUEXT)
 TTHREADINCDIR=$(WINDIR)