mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-10 13:29:16 +02:00
* some mips rtl compilation issues fixed
git-svn-id: trunk@20277 -
This commit is contained in:
parent
58fbd386a3
commit
806ae36100
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -7669,6 +7669,8 @@ rtl/macos/sysutils.pp svneol=native#text/plain
|
|||||||
rtl/mips/int64p.inc svneol=native#text/plain
|
rtl/mips/int64p.inc svneol=native#text/plain
|
||||||
rtl/mips/makefile.cpu svneol=native#text/plain
|
rtl/mips/makefile.cpu svneol=native#text/plain
|
||||||
rtl/mips/math.inc svneol=native#text/plain
|
rtl/mips/math.inc svneol=native#text/plain
|
||||||
|
rtl/mips/mathu.inc svneol=native#text/plain
|
||||||
|
rtl/mips/mathuh.inc svneol=native#text/plain
|
||||||
rtl/mips/mips.inc svneol=native#text/plain
|
rtl/mips/mips.inc svneol=native#text/plain
|
||||||
rtl/mips/set.inc svneol=native#text/plain
|
rtl/mips/set.inc svneol=native#text/plain
|
||||||
rtl/mips/setjump.inc svneol=native#text/plain
|
rtl/mips/setjump.inc svneol=native#text/plain
|
||||||
|
@ -545,11 +545,18 @@ begin
|
|||||||
{$ifdef CPU64}
|
{$ifdef CPU64}
|
||||||
Fppread:=do_syscall(syscall_nr_pread64,Fd,TSysParam(buf),nbytes,TSysParam(OffSet));
|
Fppread:=do_syscall(syscall_nr_pread64,Fd,TSysParam(buf),nbytes,TSysParam(OffSet));
|
||||||
{$else}
|
{$else}
|
||||||
|
{$ifdef CPUMIPS32}
|
||||||
|
Fppread:=do_syscall(syscall_nr_pread64,Fd,TSysParam(buf),nbytes,0, { align parameters as required with dummy }
|
||||||
|
{$ifdef FPC_BIG_ENDIAN} hi(offset),lo(offset){$endif}
|
||||||
|
{$ifdef FPC_LITTLE_ENDIAN} lo(offset),hi(offset){$endif}
|
||||||
|
);
|
||||||
|
{$else CPUMIPS32}
|
||||||
Fppread:=do_syscall(syscall_nr_pread,Fd,TSysParam(buf),nbytes,
|
Fppread:=do_syscall(syscall_nr_pread,Fd,TSysParam(buf),nbytes,
|
||||||
{$ifdef FPC_ABI_EABI} 0, { align parameters as required with dummy } {$endif FPC_ABI_EABI}
|
{$ifdef FPC_ABI_EABI} 0, { align parameters as required with dummy } {$endif FPC_ABI_EABI}
|
||||||
{$ifdef FPC_BIG_ENDIAN} hi(offset),lo(offset){$endif}
|
{$ifdef FPC_BIG_ENDIAN} hi(offset),lo(offset){$endif}
|
||||||
{$ifdef FPC_LITTLE_ENDIAN} lo(offset),hi(offset){$endif}
|
{$ifdef FPC_LITTLE_ENDIAN} lo(offset),hi(offset){$endif}
|
||||||
);
|
);
|
||||||
|
{$endif CPUMIPS32}
|
||||||
{$endif}
|
{$endif}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -559,11 +566,17 @@ begin
|
|||||||
{$ifdef CPU64}
|
{$ifdef CPU64}
|
||||||
Fppwrite:=do_syscall(syscall_nr_pwrite64,Fd,TSysParam(buf),nbytes,TSysParam(OffSet));
|
Fppwrite:=do_syscall(syscall_nr_pwrite64,Fd,TSysParam(buf),nbytes,TSysParam(OffSet));
|
||||||
{$else}
|
{$else}
|
||||||
Fppwrite:=do_syscall(syscall_nr_pwrite,Fd,TSysParam(buf),nbytes,
|
{$ifdef CPUMIPS32}
|
||||||
|
Fppwrite:=do_syscall(syscall_nr_pwrite64,Fd,TSysParam(buf),nbytes,
|
||||||
{$ifdef FPC_ABI_EABI} 0, { align parameters as required with dummy } {$endif FPC_ABI_EABI}
|
{$ifdef FPC_ABI_EABI} 0, { align parameters as required with dummy } {$endif FPC_ABI_EABI}
|
||||||
{$ifdef FPC_BIG_ENDIAN} hi(offset),lo(offset){$endif}
|
{$ifdef FPC_BIG_ENDIAN} hi(offset),lo(offset){$endif}
|
||||||
{$ifdef FPC_LITTLE_ENDIAN} lo(offset),hi(offset){$endif}
|
{$ifdef FPC_LITTLE_ENDIAN} lo(offset),hi(offset){$endif}
|
||||||
);
|
);
|
||||||
|
{$else CPUMIPS32}
|
||||||
|
Fppwrite:=do_syscall(syscall_nr_pwrite,Fd,TSysParam(buf),nbytes,0, { align parameters as required with dummy }
|
||||||
|
{$ifdef FPC_BIG_ENDIAN} hi(offset),lo(offset){$endif}
|
||||||
|
{$ifdef FPC_LITTLE_ENDIAN} lo(offset),hi(offset){$endif}
|
||||||
|
{$endif CPUMIPS32}
|
||||||
{$endif}
|
{$endif}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -1222,6 +1222,246 @@ Const
|
|||||||
|
|
||||||
{$endif cpuarm}
|
{$endif cpuarm}
|
||||||
|
|
||||||
|
|
||||||
|
{$ifdef cpumips}
|
||||||
|
const
|
||||||
|
TCGETA = $5401;
|
||||||
|
TCSETA = $5402;
|
||||||
|
TCSETAW = $5403;
|
||||||
|
TCSETAF = $5404;
|
||||||
|
TCSBRK = $5405;
|
||||||
|
TCXONC = $5406;
|
||||||
|
TCFLSH = $5407;
|
||||||
|
TCGETS = $540d;
|
||||||
|
TCSETS = $540e;
|
||||||
|
TCSETSW = $540f;
|
||||||
|
TCSETSF = $5410;
|
||||||
|
|
||||||
|
TIOCEXCL = $740d;
|
||||||
|
TIOCNXCL = $740e;
|
||||||
|
TIOCOUTQ = $7472;
|
||||||
|
TIOCSTI = $5472;
|
||||||
|
TIOCMGET = $741d;
|
||||||
|
TIOCMBIS = $741b;
|
||||||
|
TIOCMBIC = $741c;
|
||||||
|
TIOCMSET = $741a;
|
||||||
|
TIOCPKT = $5470;
|
||||||
|
TIOCPKT_DATA = $00;
|
||||||
|
TIOCPKT_FLUSHREAD = $01;
|
||||||
|
TIOCPKT_FLUSHWRITE = $02;
|
||||||
|
TIOCPKT_STOP = $04;
|
||||||
|
TIOCPKT_START = $08;
|
||||||
|
TIOCPKT_NOSTOP = $10;
|
||||||
|
TIOCPKT_DOSTOP = $20;
|
||||||
|
TIOCPKT_IOCTL = $40;
|
||||||
|
{$warning Check TIOCGWINSZ and TIOCSWINSZ on a real mips system }
|
||||||
|
TIOCGWINSZ = $5414;
|
||||||
|
TIOCSWINSZ = $5414;
|
||||||
|
|
||||||
|
TIOCNOTTY = $5471;
|
||||||
|
TIOCSETD = $7401;
|
||||||
|
TIOCGETD = $7400;
|
||||||
|
FIOCLEX = $6601;
|
||||||
|
FIONCLEX = $6602;
|
||||||
|
FIOASYNC = $667d;
|
||||||
|
FIONBIO = $667e;
|
||||||
|
FIOQSIZE = $667f;
|
||||||
|
|
||||||
|
TIOCGLTC = $7474;
|
||||||
|
TIOCSLTC = $7475;
|
||||||
|
{$warning Check TIOCGPGRP and TIOCSPGRP on a real mips system }
|
||||||
|
TIOCGPGRP = $540F;
|
||||||
|
TIOCSPGRP = $5410;
|
||||||
|
|
||||||
|
FIONREAD = $467f;
|
||||||
|
TIOCINQ = FIONREAD;
|
||||||
|
TIOCGETP = $7408;
|
||||||
|
TIOCSETP = $7409;
|
||||||
|
TIOCSETN = $740a;
|
||||||
|
TIOCSBRK = $5427;
|
||||||
|
TIOCCBRK = $5428;
|
||||||
|
TIOCGSID = $7416;
|
||||||
|
TIOCVHANGUP = $5437;
|
||||||
|
TIOCSCTTY = $5480;
|
||||||
|
TIOCGSOFTCAR = $5481;
|
||||||
|
TIOCSSOFTCAR = $5482;
|
||||||
|
TIOCLINUX = $5483;
|
||||||
|
TIOCGSERIAL = $5484;
|
||||||
|
TIOCSSERIAL = $5485;
|
||||||
|
TCSBRKP = $5486;
|
||||||
|
TIOCSERCONFIG = $5488;
|
||||||
|
TIOCSERGWILD = $5489;
|
||||||
|
TIOCSERSWILD = $548a;
|
||||||
|
TIOCGLCKTRMIOS = $548b;
|
||||||
|
TIOCSLCKTRMIOS = $548c;
|
||||||
|
TIOCSERGSTRUCT = $548d;
|
||||||
|
TIOCSERGETLSR = $548e;
|
||||||
|
TIOCSERGETMULTI = $548f;
|
||||||
|
TIOCSERSETMULTI = $5490;
|
||||||
|
TIOCMIWAIT = $5491;
|
||||||
|
TIOCGICOUNT = $5492;
|
||||||
|
|
||||||
|
VINTR = 0;
|
||||||
|
VQUIT = 1;
|
||||||
|
VERASE = 2;
|
||||||
|
VKILL = 3;
|
||||||
|
VMIN = 4;
|
||||||
|
VTIME = 5;
|
||||||
|
VEOL2 = 6;
|
||||||
|
VSWTC = 7;
|
||||||
|
VSWTCH = VSWTC;
|
||||||
|
VSTART = 8;
|
||||||
|
VSTOP = 9;
|
||||||
|
VSUSP = 10;
|
||||||
|
|
||||||
|
|
||||||
|
const
|
||||||
|
VREPRINT = 12;
|
||||||
|
VDISCARD = 13;
|
||||||
|
VWERASE = 14;
|
||||||
|
VLNEXT = 15;
|
||||||
|
VEOF = 16;
|
||||||
|
VEOL = 17;
|
||||||
|
|
||||||
|
IGNBRK = $0000001;
|
||||||
|
BRKINT = $0000002;
|
||||||
|
IGNPAR = $0000004;
|
||||||
|
PARMRK = $0000010;
|
||||||
|
INPCK = $0000020;
|
||||||
|
ISTRIP = $0000040;
|
||||||
|
INLCR = $0000100;
|
||||||
|
IGNCR = $0000200;
|
||||||
|
ICRNL = $0000400;
|
||||||
|
IUCLC = $0001000;
|
||||||
|
IXON = $0002000;
|
||||||
|
IXANY = $0004000;
|
||||||
|
IXOFF = $0010000;
|
||||||
|
IMAXBEL = $0020000;
|
||||||
|
IUTF8 = $0040000;
|
||||||
|
|
||||||
|
OPOST = $0000001;
|
||||||
|
OLCUC = $0000002;
|
||||||
|
|
||||||
|
ONLCR = $0000004;
|
||||||
|
OCRNL = $0000010;
|
||||||
|
ONOCR = $0000020;
|
||||||
|
ONLRET = $0000040;
|
||||||
|
OFILL = $0000100;
|
||||||
|
OFDEL = $0000200;
|
||||||
|
NLDLY = $0000400;
|
||||||
|
NL0 = $0000000;
|
||||||
|
NL1 = $0000400;
|
||||||
|
CRDLY = $0003000;
|
||||||
|
CR0 = $0000000;
|
||||||
|
CR1 = $0001000;
|
||||||
|
CR2 = $0002000;
|
||||||
|
CR3 = $0003000;
|
||||||
|
TABDLY = $0014000;
|
||||||
|
TAB0 = $0000000;
|
||||||
|
TAB1 = $0004000;
|
||||||
|
TAB2 = $0010000;
|
||||||
|
TAB3 = $0014000;
|
||||||
|
XTABS = $0014000;
|
||||||
|
BSDLY = $0020000;
|
||||||
|
BS0 = $0000000;
|
||||||
|
BS1 = $0020000;
|
||||||
|
VTDLY = $0040000;
|
||||||
|
VT0 = $0000000;
|
||||||
|
VT1 = $0040000;
|
||||||
|
FFDLY = $0100000;
|
||||||
|
FF0 = $0000000;
|
||||||
|
FF1 = $0100000;
|
||||||
|
|
||||||
|
|
||||||
|
CBAUD = $0010017;
|
||||||
|
|
||||||
|
B0 = $0000000;
|
||||||
|
B50 = $0000001;
|
||||||
|
B75 = $0000002;
|
||||||
|
B110 = $0000003;
|
||||||
|
B134 = $0000004;
|
||||||
|
B150 = $0000005;
|
||||||
|
B200 = $0000006;
|
||||||
|
B300 = $0000007;
|
||||||
|
B600 = $0000010;
|
||||||
|
B1200 = $0000011;
|
||||||
|
B1800 = $0000012;
|
||||||
|
B2400 = $0000013;
|
||||||
|
B4800 = $0000014;
|
||||||
|
B9600 = $0000015;
|
||||||
|
B19200 = $0000016;
|
||||||
|
B38400 = $0000017;
|
||||||
|
EXTA = $B19200;
|
||||||
|
EXTB = $B38400;
|
||||||
|
|
||||||
|
CSIZE = $0000060;
|
||||||
|
CS5 = $0000000;
|
||||||
|
CS6 = $0000020;
|
||||||
|
CS7 = $0000040;
|
||||||
|
CS8 = $0000060;
|
||||||
|
CSTOPB = $0000100;
|
||||||
|
CREAD = $0000200;
|
||||||
|
PARENB = $0000400;
|
||||||
|
PARODD = $0001000;
|
||||||
|
HUPCL = $0002000;
|
||||||
|
CLOCAL = $0004000;
|
||||||
|
CBAUDEX = $0010000;
|
||||||
|
BOTHER = $0010000;
|
||||||
|
B57600 = $0010001;
|
||||||
|
B115200 = $0010002;
|
||||||
|
B230400 = $0010003;
|
||||||
|
B460800 = $0010004;
|
||||||
|
B500000 = $0010005;
|
||||||
|
B576000 = $0010006;
|
||||||
|
B921600 = $0010007;
|
||||||
|
B1000000 = $0010010;
|
||||||
|
B1152000 = $0010011;
|
||||||
|
B1500000 = $0010012;
|
||||||
|
B2000000 = $0010013;
|
||||||
|
B2500000 = $0010014;
|
||||||
|
B3000000 = $0010015;
|
||||||
|
B3500000 = $0010016;
|
||||||
|
B4000000 = $0010017;
|
||||||
|
|
||||||
|
CIBAUD = $002003600000;
|
||||||
|
CMSPAR = $010000000000;
|
||||||
|
CRTSCTS = $020000000000;
|
||||||
|
IBSHIFT = 16;
|
||||||
|
|
||||||
|
ISIG = $0000001;
|
||||||
|
ICANON = $0000002;
|
||||||
|
XCASE = $0000004;
|
||||||
|
ECHO = $0000010;
|
||||||
|
ECHOE = $0000020;
|
||||||
|
ECHOK = $0000040;
|
||||||
|
ECHONL = $0000100;
|
||||||
|
NOFLSH = $0000200;
|
||||||
|
IEXTEN = $0000400;
|
||||||
|
ECHOCTL = $0001000;
|
||||||
|
ECHOPRT = $0002000;
|
||||||
|
ECHOKE = $0004000;
|
||||||
|
FLUSHO = $0020000;
|
||||||
|
PENDIN = $0040000;
|
||||||
|
TOSTOP = $0100000;
|
||||||
|
ITOSTOP = TOSTOP;
|
||||||
|
EXTPROC = $0200000;
|
||||||
|
TIOCSER_TEMT = $01;
|
||||||
|
|
||||||
|
TCOOFF = 0;
|
||||||
|
TCOON = 1;
|
||||||
|
TCIOFF = 2;
|
||||||
|
TCION = 3;
|
||||||
|
|
||||||
|
|
||||||
|
TCIFLUSH = 0;
|
||||||
|
TCOFLUSH = 1;
|
||||||
|
TCIOFLUSH = 2;
|
||||||
|
|
||||||
|
TCSANOW = TCSETS;
|
||||||
|
TCSADRAIN = TCSETSW;
|
||||||
|
TCSAFLUSH = TCSETSF;
|
||||||
|
{$endif CPUMIPS}
|
||||||
|
|
||||||
Type
|
Type
|
||||||
winsize = record
|
winsize = record
|
||||||
ws_row,
|
ws_row,
|
||||||
|
146
rtl/mips/mathu.inc
Normal file
146
rtl/mips/mathu.inc
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
{
|
||||||
|
This file is part of the Free Pascal run time library.
|
||||||
|
Copyright (c) 1999-2000 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.
|
||||||
|
|
||||||
|
**********************************************************************}
|
||||||
|
|
||||||
|
{ exported by the system unit }
|
||||||
|
//!!!function get_fsr : dword;external name 'FPC_GETFSR';
|
||||||
|
//!!!procedure set_fsr(fsr : dword);external name 'FPC_SETFSR';
|
||||||
|
|
||||||
|
function FPUExceptionMaskToSoftFloatMask(const Mask: TFPUExceptionMask): byte;
|
||||||
|
begin
|
||||||
|
result:=0;
|
||||||
|
if exInvalidOp in Mask then
|
||||||
|
result:=result or (1 shl ord(exInvalidOp));
|
||||||
|
if exDenormalized in Mask then
|
||||||
|
result:=result or (1 shl ord(exDenormalized));
|
||||||
|
if exZeroDivide in Mask then
|
||||||
|
result:=result or (1 shl ord(exZeroDivide));
|
||||||
|
if exOverflow in Mask then
|
||||||
|
result:=result or (1 shl ord(exOverflow));
|
||||||
|
if exUnderflow in Mask then
|
||||||
|
result:=result or (1 shl ord(exUnderflow));
|
||||||
|
if exPrecision in Mask then
|
||||||
|
result:=result or (1 shl ord(exPrecision));
|
||||||
|
end;
|
||||||
|
|
||||||
|
function GetRoundMode: TFPURoundingMode;
|
||||||
|
begin
|
||||||
|
//!!! result:=TFPURoundingMode(get_fsr shr 30);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
|
||||||
|
begin
|
||||||
|
case (RoundMode) of
|
||||||
|
rmNearest :
|
||||||
|
softfloat_rounding_mode := float_round_nearest_even;
|
||||||
|
rmTruncate :
|
||||||
|
softfloat_rounding_mode := float_round_to_zero;
|
||||||
|
rmUp :
|
||||||
|
softfloat_rounding_mode := float_round_up;
|
||||||
|
rmDown :
|
||||||
|
softfloat_rounding_mode := float_round_down;
|
||||||
|
end;
|
||||||
|
//!!! set_fsr((get_fsr and $3fffffff) or (dword(RoundMode) shl 30));
|
||||||
|
//!!! result:=TFPURoundingMode(get_fsr shr 30);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function GetPrecisionMode: TFPUPrecisionMode;
|
||||||
|
begin
|
||||||
|
result:=pmDouble;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode;
|
||||||
|
begin
|
||||||
|
result:=pmDouble;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function GetExceptionMask: TFPUExceptionMask;
|
||||||
|
var
|
||||||
|
fsr : dword;
|
||||||
|
begin
|
||||||
|
//!!! fsr:=get_fsr;
|
||||||
|
result:=[];
|
||||||
|
{ invalid operation: bit 27 }
|
||||||
|
if (fsr and (1 shl 27))=0 then
|
||||||
|
include(result,exInvalidOp);
|
||||||
|
|
||||||
|
{ zero divide: bit 24 }
|
||||||
|
if (fsr and (1 shl 24))=0 then
|
||||||
|
include(result,exInvalidOp);
|
||||||
|
|
||||||
|
{ overflow: bit 26 }
|
||||||
|
if (fsr and (1 shl 26))=0 then
|
||||||
|
include(result,exInvalidOp);
|
||||||
|
|
||||||
|
{ underflow: bit 25 }
|
||||||
|
if (fsr and (1 shl 25))=0 then
|
||||||
|
include(result,exUnderflow);
|
||||||
|
|
||||||
|
{ Precision (inexact result): bit 23 }
|
||||||
|
if (fsr and (1 shl 23))=0 then
|
||||||
|
include(result,exPrecision);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
|
||||||
|
var
|
||||||
|
fsr : dword;
|
||||||
|
begin
|
||||||
|
//!!! fsr:=get_fsr;
|
||||||
|
|
||||||
|
{ invalid operation: bit 27 }
|
||||||
|
if (exInvalidOp in mask) then
|
||||||
|
fsr:=fsr and not(1 shl 27)
|
||||||
|
else
|
||||||
|
fsr:=fsr or (1 shl 27);
|
||||||
|
|
||||||
|
{ zero divide: bit 24 }
|
||||||
|
if (exZeroDivide in mask) then
|
||||||
|
fsr:=fsr and not(1 shl 24)
|
||||||
|
else
|
||||||
|
fsr:=fsr or (1 shl 24);
|
||||||
|
|
||||||
|
{ overflow: bit 26 }
|
||||||
|
if (exOverflow in mask) then
|
||||||
|
fsr:=fsr and not(1 shl 26)
|
||||||
|
else
|
||||||
|
fsr:=fsr or (1 shl 26);
|
||||||
|
|
||||||
|
{ underflow: bit 25 }
|
||||||
|
if (exUnderflow in mask) then
|
||||||
|
fsr:=fsr and not(1 shl 25)
|
||||||
|
else
|
||||||
|
fsr:=fsr or (1 shl 25);
|
||||||
|
|
||||||
|
{ Precision (inexact result): bit 23 }
|
||||||
|
if (exPrecision in mask) then
|
||||||
|
fsr:=fsr and not(1 shl 23)
|
||||||
|
else
|
||||||
|
fsr:=fsr or (1 shl 23);
|
||||||
|
|
||||||
|
{ update control register contents }
|
||||||
|
//!!! set_fsr(fsr);
|
||||||
|
|
||||||
|
softfloat_exception_mask:=FPUExceptionMaskToSoftFloatMask(mask);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure ClearExceptions(RaisePending: Boolean =true);
|
||||||
|
begin
|
||||||
|
//!!! set_fsr(get_fsr and $fffffc1f);
|
||||||
|
end;
|
||||||
|
|
29
rtl/mips/mathuh.inc
Normal file
29
rtl/mips/mathuh.inc
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
This file is part of the Free Pascal run time library.
|
||||||
|
Copyright (c) 1999-2000 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.
|
||||||
|
|
||||||
|
**********************************************************************}
|
||||||
|
|
||||||
|
type
|
||||||
|
TFPURoundingMode = (rmNearest, rmDown, rmUp, rmTruncate);
|
||||||
|
TFPUPrecisionMode = (pmSingle, pmReserved, pmDouble, pmExtended);
|
||||||
|
TFPUException = (exInvalidOp, exDenormalized, exZeroDivide,
|
||||||
|
exOverflow, exUnderflow, exPrecision);
|
||||||
|
TFPUExceptionMask = set of TFPUException;
|
||||||
|
|
||||||
|
function GetRoundMode: TFPURoundingMode;
|
||||||
|
function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;
|
||||||
|
function GetPrecisionMode: TFPUPrecisionMode;
|
||||||
|
function SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode;
|
||||||
|
function GetExceptionMask: TFPUExceptionMask;
|
||||||
|
function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
|
||||||
|
procedure ClearExceptions(RaisePending: Boolean =true);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user