mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-31 03:53:57 +01:00 
			
		
		
		
	+ completed x86-64/linux system unit
This commit is contained in:
		
							parent
							
								
									9393dc18bb
								
							
						
					
					
						commit
						c9122a4719
					
				| @ -25,12 +25,14 @@ procedure fpc_cpuinit; | |||||||
| begin | begin | ||||||
| end; | end; | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| function geteipasebx : pointer;assembler;[public,alias:'FPC_GETEIPINEBX']; | function geteipasebx : pointer;assembler;[public,alias:'FPC_GETEIPINEBX']; | ||||||
| asm | asm | ||||||
|   movl (%esp),%ebx |   movl (%esp),%ebx | ||||||
|   ret |   ret | ||||||
| end; | end; | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| {$ifndef FPC_SYSTEM_HAS_MOVE} | {$ifndef FPC_SYSTEM_HAS_MOVE} | ||||||
| {$define FPC_SYSTEM_HAS_MOVE} | {$define FPC_SYSTEM_HAS_MOVE} | ||||||
| procedure Move(const source;var dest;count:longint);assembler; | procedure Move(const source;var dest;count:longint);assembler; | ||||||
| @ -1455,7 +1457,10 @@ end; | |||||||
| 
 | 
 | ||||||
| { | { | ||||||
|   $Log$ |   $Log$ | ||||||
|   Revision 1.58  2004-01-11 11:10:07  jonas |   Revision 1.59  2004-02-05 01:16:12  florian | ||||||
|  |     + completed x86-64/linux system unit | ||||||
|  | 
 | ||||||
|  |   Revision 1.58  2004/01/11 11:10:07  jonas | ||||||
|     + cgeneric.inc: implementations of rtl routines based on libc |     + cgeneric.inc: implementations of rtl routines based on libc | ||||||
|     * system.inc: include cgeneric.inc before powerpc.inc/i386.inc/... if |     * system.inc: include cgeneric.inc before powerpc.inc/i386.inc/... if | ||||||
|       FPC_USE_LIBC is defined |       FPC_USE_LIBC is defined | ||||||
|  | |||||||
| @ -38,7 +38,7 @@ Type | |||||||
|   TExceptObjectClass = Class of TObject; |   TExceptObjectClass = Class of TObject; | ||||||
| 
 | 
 | ||||||
| Const | Const | ||||||
|   CatchAllExceptions = SizeInt(-1); |   CatchAllExceptions : PtrInt = -1; | ||||||
| {$ifdef SUPPORT_THREADVAR} | {$ifdef SUPPORT_THREADVAR} | ||||||
| ThreadVar | ThreadVar | ||||||
| {$else SUPPORT_THREADVAR} | {$else SUPPORT_THREADVAR} | ||||||
| @ -311,7 +311,10 @@ begin | |||||||
| end; | end; | ||||||
| { | { | ||||||
|   $Log$ |   $Log$ | ||||||
|   Revision 1.13  2003-11-26 20:12:08  michael |   Revision 1.14  2004-02-05 01:16:12  florian | ||||||
|  |     + completed x86-64/linux system unit | ||||||
|  | 
 | ||||||
|  |   Revision 1.13  2003/11/26 20:12:08  michael | ||||||
|   + New runerror 231 (exception stack error) and 232 (nothread support) |   + New runerror 231 (exception stack error) and 232 (nothread support) | ||||||
| 
 | 
 | ||||||
|   Revision 1.12  2003/10/06 15:59:20  florian |   Revision 1.12  2003/10/06 15:59:20  florian | ||||||
|  | |||||||
| @ -26,8 +26,8 @@ const | |||||||
| type | type | ||||||
|   FileRec = Packed Record |   FileRec = Packed Record | ||||||
|     Handle    : THandle; |     Handle    : THandle; | ||||||
|     Mode, |     Mode      : longint; | ||||||
|     RecSize   : longint; |     RecSize   : SizeInt; | ||||||
|     _private  : array[1..32] of byte; |     _private  : array[1..32] of byte; | ||||||
|     UserData  : array[1..16] of byte; |     UserData  : array[1..16] of byte; | ||||||
|     name      : array[0..filerecnamelength] of char; |     name      : array[0..filerecnamelength] of char; | ||||||
| @ -35,7 +35,10 @@ type | |||||||
| 
 | 
 | ||||||
| { | { | ||||||
|   $Log$ |   $Log$ | ||||||
|   Revision 1.4  2003-11-03 09:42:27  marco |   Revision 1.5  2004-02-05 01:16:12  florian | ||||||
|  |     + completed x86-64/linux system unit | ||||||
|  | 
 | ||||||
|  |   Revision 1.4  2003/11/03 09:42:27  marco | ||||||
|    * Peter's Cardinal<->Longint fixes patch |    * Peter's Cardinal<->Longint fixes patch | ||||||
| 
 | 
 | ||||||
|   Revision 1.3  2002/09/07 15:07:45  peter |   Revision 1.3  2002/09/07 15:07:45  peter | ||||||
|  | |||||||
| @ -32,7 +32,7 @@ type | |||||||
|     bufsize, |     bufsize, | ||||||
|     _private, |     _private, | ||||||
|     bufpos, |     bufpos, | ||||||
|     bufend    : longint; |     bufend    : SizeInt; | ||||||
|     bufptr    : ^textbuf; |     bufptr    : ^textbuf; | ||||||
|     openfunc, |     openfunc, | ||||||
|     inoutfunc, |     inoutfunc, | ||||||
| @ -45,7 +45,10 @@ type | |||||||
| 
 | 
 | ||||||
| { | { | ||||||
|   $Log$ |   $Log$ | ||||||
|   Revision 1.4  2003-11-03 09:42:28  marco |   Revision 1.5  2004-02-05 01:16:12  florian | ||||||
|  |     + completed x86-64/linux system unit | ||||||
|  | 
 | ||||||
|  |   Revision 1.4  2003/11/03 09:42:28  marco | ||||||
|    * Peter's Cardinal<->Longint fixes patch |    * Peter's Cardinal<->Longint fixes patch | ||||||
| 
 | 
 | ||||||
|   Revision 1.3  2002/09/07 15:07:46  peter |   Revision 1.3  2002/09/07 15:07:46  peter | ||||||
|  | |||||||
| @ -77,12 +77,13 @@ end; | |||||||
| 
 | 
 | ||||||
| { | { | ||||||
|   $Log$ |   $Log$ | ||||||
|   Revision 1.2  2003-11-01 01:58:11  marco |   Revision 1.3  2004-02-05 01:16:12  florian | ||||||
|  |     + completed x86-64/linux system unit | ||||||
|  | 
 | ||||||
|  |   Revision 1.2  2003/11/01 01:58:11  marco | ||||||
|    * more small fixes. |    * more small fixes. | ||||||
| 
 | 
 | ||||||
|   Revision 1.1  2003/11/01 01:27:20  marco |   Revision 1.1  2003/11/01 01:27:20  marco | ||||||
|    * initial version from 1.0.x branch |    * initial version from 1.0.x branch | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -361,6 +361,10 @@ type | |||||||
| {$define OLDMMAP} | {$define OLDMMAP} | ||||||
| {$endif cpuarm} | {$endif cpuarm} | ||||||
| 
 | 
 | ||||||
|  | {$ifdef cpux86_64} | ||||||
|  | {$define OLDMMAP} | ||||||
|  | {$endif cpux86_64} | ||||||
|  | 
 | ||||||
| Function Fpmmap(adr:pointer;len:size_t;prot:cint;flags:cint;fd:cint;off:off_t):pointer;  [public, alias : 'FPC_SYSC_MMAP']; | Function Fpmmap(adr:pointer;len:size_t;prot:cint;flags:cint;fd:cint;off:off_t):pointer;  [public, alias : 'FPC_SYSC_MMAP']; | ||||||
| // OFF_T procedure, and returns a pointer, NOT cint.
 | // OFF_T procedure, and returns a pointer, NOT cint.
 | ||||||
| 
 | 
 | ||||||
| @ -475,7 +479,10 @@ end; | |||||||
| 
 | 
 | ||||||
| { | { | ||||||
|  $Log$ |  $Log$ | ||||||
|  Revision 1.14  2004-01-31 16:25:48  florian |  Revision 1.15  2004-02-05 01:16:12  florian | ||||||
|  |    + completed x86-64/linux system unit | ||||||
|  | 
 | ||||||
|  |  Revision 1.14  2004/01/31 16:25:48  florian | ||||||
|    * use wait4 instead of waitpid on arm |    * use wait4 instead of waitpid on arm | ||||||
| 
 | 
 | ||||||
|  Revision 1.13  2004/01/23 00:00:06  florian |  Revision 1.13  2004/01/23 00:00:06  florian | ||||||
|  | |||||||
| @ -133,7 +133,6 @@ type | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| {$ifdef cpupowerpc} | {$ifdef cpupowerpc} | ||||||
| 
 |  | ||||||
|   { from include/ppc/ptrace.h } |   { from include/ppc/ptrace.h } | ||||||
|   pptregs = ^tptregs; |   pptregs = ^tptregs; | ||||||
|   tptregs = record |   tptregs = record | ||||||
| @ -242,6 +241,12 @@ type | |||||||
|   end; |   end; | ||||||
| {$endif cpusparc} | {$endif cpusparc} | ||||||
| 
 | 
 | ||||||
|  | {$ifdef cpux86_64} | ||||||
|  | { get it from glibc/sysdeps/unix/sysv/linux/x86_64/sys/uncontext.h } | ||||||
|  |   PSigContextRec = ^SigContextRec; | ||||||
|  |   SigContextRec = record | ||||||
|  |   end; | ||||||
|  | {$endif cpux86_64} | ||||||
| 
 | 
 | ||||||
| {$ifdef cpuarm} | {$ifdef cpuarm} | ||||||
|   PSigContextRec = ^SigContextRec; |   PSigContextRec = ^SigContextRec; | ||||||
| @ -342,7 +347,10 @@ type | |||||||
| 
 | 
 | ||||||
| { | { | ||||||
|   $Log$ |   $Log$ | ||||||
|   Revision 1.15  2004-01-01 16:28:16  jonas |   Revision 1.16  2004-02-05 01:16:12  florian | ||||||
|  |     + completed x86-64/linux system unit | ||||||
|  | 
 | ||||||
|  |   Revision 1.15  2004/01/01 16:28:16  jonas | ||||||
|     * fixed signal handling |     * fixed signal handling | ||||||
| 
 | 
 | ||||||
|   Revision 1.14  2003/11/21 00:40:06  florian |   Revision 1.14  2003/11/21 00:40:06  florian | ||||||
|  | |||||||
							
								
								
									
										93
									
								
								rtl/linux/x86_64/sighnd.inc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								rtl/linux/x86_64/sighnd.inc
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,93 @@ | |||||||
|  | { | ||||||
|  |     $Id$ | ||||||
|  |     This file is part of the Free Pascal run time library. | ||||||
|  |     Copyright (c) 1999-2000 by Michael Van Canneyt, | ||||||
|  |     member of the Free Pascal development team. | ||||||
|  | 
 | ||||||
|  |     Signal handler is arch dependant due to processor to language | ||||||
|  |     exception conversion. | ||||||
|  | 
 | ||||||
|  |     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. | ||||||
|  | 
 | ||||||
|  |  **********************************************************************} | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | const | ||||||
|  |   FPU_All = $7f; | ||||||
|  | 
 | ||||||
|  | function GetFPUState(const SigContext : SigContextRec) : longint; | ||||||
|  | begin | ||||||
|  | {!!!!!!! | ||||||
|  |   if assigned(SigContext.fpstate) then | ||||||
|  |     GetfpuState:=SigContext.fpstate^.sw; | ||||||
|  | {$ifdef SYSTEM_DEBUG} | ||||||
|  |   writeln('xx:',sigcontext.en_tw,' ',sigcontext.en_cw); | ||||||
|  | {$endif SYSTEM_DEBUG} | ||||||
|  | {$ifdef SYSTEM_DEBUG} | ||||||
|  |   Writeln(stderr,'FpuState = ',GetFpuState); | ||||||
|  | {$endif SYSTEM_DEBUG} | ||||||
|  | } | ||||||
|  | end; | ||||||
|  | 
 | ||||||
|  | procedure SignalToRunerror(Sig: longint; SigContext: SigContextRec); cdecl; | ||||||
|  | 
 | ||||||
|  | var | ||||||
|  |   res,fpustate : word; | ||||||
|  | begin | ||||||
|  |   res:=0; | ||||||
|  |   case sig of | ||||||
|  |     SIGFPE : | ||||||
|  |           begin | ||||||
|  |     { this is not allways necessary but I don't know yet | ||||||
|  |       how to tell if it is or not PM } | ||||||
|  |           res:=200; | ||||||
|  |           fpustate:=GetFPUState(SigContext); | ||||||
|  |           if (FpuState and FPU_All) <> 0 then | ||||||
|  |             begin | ||||||
|  |               { first check the more precise options } | ||||||
|  |               if (FpuState and FPU_DivisionByZero)<>0 then | ||||||
|  |                 res:=200 | ||||||
|  |               else if (FpuState and FPU_Overflow)<>0 then | ||||||
|  |                 res:=205 | ||||||
|  |               else if (FpuState and FPU_Underflow)<>0 then | ||||||
|  |                 res:=206 | ||||||
|  |               else if (FpuState and FPU_Denormal)<>0 then | ||||||
|  |                 res:=216 | ||||||
|  |               else if (FpuState and (FPU_StackOverflow or FPU_StackUnderflow))<>0 Then | ||||||
|  |                 res:=207 | ||||||
|  |               else if (FpuState and FPU_Invalid)<>0 then | ||||||
|  |                 res:=216 | ||||||
|  |               else | ||||||
|  |                 res:=207;  {'Coprocessor Error'} | ||||||
|  |             end; | ||||||
|  |             sysResetFPU; | ||||||
|  |         end; | ||||||
|  |     SIGILL, | ||||||
|  |     SIGBUS, | ||||||
|  |     SIGSEGV : | ||||||
|  |         res:=216; | ||||||
|  |   end; | ||||||
|  | { give runtime error at the position where the signal was raised } | ||||||
|  | {!!!! | ||||||
|  |   if res<>0 then | ||||||
|  |     HandleErrorAddrFrame(res,pointer(SigContext.eip),pointer(SigContext.ebp)); | ||||||
|  | } | ||||||
|  | end; | ||||||
|  | 
 | ||||||
|  | { | ||||||
|  |   $Log$ | ||||||
|  |   Revision 1.1  2004-02-05 01:16:12  florian | ||||||
|  |     + completed x86-64/linux system unit | ||||||
|  | 
 | ||||||
|  |   Revision 1.2  2003/11/01 01:58:11  marco | ||||||
|  |    * more small fixes. | ||||||
|  | 
 | ||||||
|  |   Revision 1.1  2003/11/01 01:27:20  marco | ||||||
|  |    * initial version from 1.0.x branch | ||||||
|  | } | ||||||
|  | 
 | ||||||
							
								
								
									
										51
									
								
								rtl/linux/x86_64/stat.inc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								rtl/linux/x86_64/stat.inc
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,51 @@ | |||||||
|  | { | ||||||
|  |     $Id$ | ||||||
|  |     This file is part of the Free Pascal run time library. | ||||||
|  |     Copyright (c) 1999-2004 by Jonas Maebe, | ||||||
|  |     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. | ||||||
|  | 
 | ||||||
|  |  **********************************************************************} | ||||||
|  | 
 | ||||||
|  | {$ifndef FPC_USE_LIBC} // kernel record
 | ||||||
|  | 
 | ||||||
|  |   stat = packed record | ||||||
|  |     st_dev : qword; | ||||||
|  |     st_ino : qword; | ||||||
|  |     st_nlink : qword; | ||||||
|  | 
 | ||||||
|  |     st_mode : dword; | ||||||
|  |     st_uid : dword; | ||||||
|  |     st_gid : dword; | ||||||
|  |     __pad0 : dword; | ||||||
|  |     st_rdev : qword; | ||||||
|  |     st_size : int64; | ||||||
|  |     st_blksize : int64; | ||||||
|  |     st_blocks : int64;      { Number 512-byte blocks allocated. } | ||||||
|  | 
 | ||||||
|  |     st_atime : qword; | ||||||
|  |     __reserved0 : qword;    { reserved for atime.nanoseconds } | ||||||
|  |     st_mtime : qword; | ||||||
|  |     __reserved1 : qword;    { reserved for atime.nanoseconds } | ||||||
|  |     st_ctime : qword; | ||||||
|  |     __reserved2 : qword;    { reserved for atime.nanoseconds } | ||||||
|  |     __unused : array[0..2] of int64; | ||||||
|  |   end; | ||||||
|  | 
 | ||||||
|  | {$else} | ||||||
|  | 
 | ||||||
|  | (* get it from glibc/sysdeps/unix/sysv/linux/x86_64/bits/stat.h and check defines with gcc *) | ||||||
|  | 
 | ||||||
|  | {$endif} | ||||||
|  | 
 | ||||||
|  | { | ||||||
|  |   $Log$ | ||||||
|  |   Revision 1.1  2004-02-05 01:16:12  florian | ||||||
|  |     + completed x86-64/linux system unit | ||||||
|  | } | ||||||
| @ -17,7 +17,7 @@ | |||||||
|  **********************************************************************} |  **********************************************************************} | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| {$ASMMODE ATT} | {$ASMMODE GAS} | ||||||
| 
 | 
 | ||||||
| function FpSysCall(sysnr:TSysParam):TSysResult; assembler;[public,alias:'FPC_SYSCALL0']; | function FpSysCall(sysnr:TSysParam):TSysResult; assembler;[public,alias:'FPC_SYSCALL0']; | ||||||
| 
 | 
 | ||||||
| @ -266,7 +266,6 @@ Procedure FpSysCall( callnr:TSysParam;var regs : SysCallregs );assembler; | |||||||
|   This function puts the registers in place, does the call, and then |   This function puts the registers in place, does the call, and then | ||||||
|   copies back the registers as they are after the SysCall. |   copies back the registers as they are after the SysCall. | ||||||
| } | } | ||||||
| {$ASMMODE ATT} |  | ||||||
| {$define fpc_syscall_ok} | {$define fpc_syscall_ok} | ||||||
| asm | asm | ||||||
| { load the registers... } | { load the registers... } | ||||||
| @ -341,7 +340,10 @@ end; | |||||||
| 
 | 
 | ||||||
| { | { | ||||||
|   $Log$ |   $Log$ | ||||||
|   Revision 1.1  2003-04-30 22:11:06  florian |   Revision 1.2  2004-02-05 01:16:12  florian | ||||||
|  |     + completed x86-64/linux system unit | ||||||
|  | 
 | ||||||
|  |   Revision 1.1  2003/04/30 22:11:06  florian | ||||||
|     + for a lot of x86-64 dependend files mostly dummies added |     + for a lot of x86-64 dependend files mostly dummies added | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -117,7 +117,7 @@ | |||||||
|             fwait |             fwait | ||||||
|             movw -4(%rbp),%cx |             movw -4(%rbp),%cx | ||||||
|             orw $0x0c3f,%cx |             orw $0x0c3f,%cx | ||||||
|             movw %cx,-8(rbp) |             movw %cx,-8(%rbp) | ||||||
|             fldcw -8(%rbp) |             fldcw -8(%rbp) | ||||||
|             fwait |             fwait | ||||||
|             fldt d |             fldt d | ||||||
| @ -198,6 +198,9 @@ | |||||||
| 
 | 
 | ||||||
| { | { | ||||||
|   $Log$ |   $Log$ | ||||||
|   Revision 1.1  2003-04-30 22:11:06  florian |   Revision 1.2  2004-02-05 01:16:12  florian | ||||||
|  |     + completed x86-64/linux system unit | ||||||
|  | 
 | ||||||
|  |   Revision 1.1  2003/04/30 22:11:06  florian | ||||||
|     + for a lot of x86-64 dependend files mostly dummies added |     + for a lot of x86-64 dependend files mostly dummies added | ||||||
| } | } | ||||||
|  | |||||||
| @ -25,7 +25,52 @@ | |||||||
|                                Primitives |                                Primitives | ||||||
| ****************************************************************************} | ****************************************************************************} | ||||||
| 
 | 
 | ||||||
|  | procedure fpc_cpuinit; | ||||||
|  | begin | ||||||
|  | end; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | {$define FPC_SYSTEM_HAS_SPTR} | ||||||
|  | Function Sptr : Pointer;assembler;{$ifdef SYSTEMINLINE}inline;{$endif} | ||||||
|  | asm | ||||||
|  |         movl    %rsp,%rax | ||||||
|  | end ['RAX']; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | {$define FPC_SYSTEM_HAS_GET_FRAME} | ||||||
|  | function get_frame:pointer;assembler;{$ifdef SYSTEMINLINE}inline;{$endif} | ||||||
|  | asm | ||||||
|  |         movq    %rbp,%rax | ||||||
|  | end ['RAX']; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | {$define FPC_SYSTEM_HAS_GET_CALLER_ADDR} | ||||||
|  | function get_caller_addr(framebp:pointer):pointer;assembler;{$ifdef SYSTEMINLINE}inline;{$endif} | ||||||
|  | asm | ||||||
|  | {$ifndef REGCALL} | ||||||
|  |         movq    framebp,%rax | ||||||
|  | {$endif} | ||||||
|  |         orq     %rax,%rax | ||||||
|  |         jz      .Lg_a_null | ||||||
|  |         movq    4(%rax),%rax | ||||||
|  | .Lg_a_null: | ||||||
|  | end ['RAX']; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | {$define FPC_SYSTEM_HAS_GET_CALLER_FRAME} | ||||||
|  | function get_caller_frame(framebp:pointer):pointer;assembler;{$ifdef SYSTEMINLINE}inline;{$endif} | ||||||
|  | asm | ||||||
|  | {$ifndef REGCALL} | ||||||
|  |         movl    framebp,%rax | ||||||
|  | {$endif} | ||||||
|  |         orl     %rax,%rax | ||||||
|  |         jz      .Lgnf_null | ||||||
|  |         movl    (%rax),%rax | ||||||
|  | .Lgnf_null: | ||||||
|  | end ['RAX']; | ||||||
| {$define FPC_SYSTEM_HAS_MOVE} | {$define FPC_SYSTEM_HAS_MOVE} | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| procedure Move(const source;var dest;count:longint);assembler; | procedure Move(const source;var dest;count:longint);assembler; | ||||||
|   asm |   asm | ||||||
|      { rdi destination |      { rdi destination | ||||||
| @ -237,9 +282,28 @@ procedure inclocked(var l : longint);assembler; | |||||||
| .Linclockedend: | .Linclockedend: | ||||||
|   end; |   end; | ||||||
| 
 | 
 | ||||||
|  | {**************************************************************************** | ||||||
|  |                                   FPU | ||||||
|  | ****************************************************************************} | ||||||
|  | 
 | ||||||
|  | const | ||||||
|  |   fpucw : word = $1332; | ||||||
|  |   { Internal constants for use in system unit } | ||||||
|  |   FPU_Invalid = 1; | ||||||
|  |   FPU_Denormal = 2; | ||||||
|  |   FPU_DivisionByZero = 4; | ||||||
|  |   FPU_Overflow = 8; | ||||||
|  |   FPU_Underflow = $10; | ||||||
|  |   FPU_StackUnderflow = $20; | ||||||
|  |   FPU_StackOverflow = $40; | ||||||
|  |   FPU_ExceptionMask = $ff; | ||||||
|  | 
 | ||||||
| { | { | ||||||
|   $Log$ |   $Log$ | ||||||
|   Revision 1.4  2004-01-20 12:52:18  florian |   Revision 1.5  2004-02-05 01:16:12  florian | ||||||
|  |     + completed x86-64/linux system unit | ||||||
|  | 
 | ||||||
|  |   Revision 1.4  2004/01/20 12:52:18  florian | ||||||
|     * some problems with x86-64 inline assembler fixed |     * some problems with x86-64 inline assembler fixed | ||||||
| 
 | 
 | ||||||
|   Revision 1.3  2003/05/01 08:05:23  florian |   Revision 1.3  2003/05/01 08:05:23  florian | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 florian
						florian