Various adjustments to the RTL for m68k:

* enable the 6 parameter syscall variant (still everything dummied out though)
* add termios constants
* don't change signal handlers for now
* disable assembly set routines as set handling was changed

git-svn-id: trunk@22743 -
This commit is contained in:
svenbarth 2012-10-18 20:12:02 +00:00
parent 2db54da2b3
commit 322dbe5b65
5 changed files with 247 additions and 6 deletions

View File

@ -51,10 +51,7 @@ function FpSysCall(sysnr,param1,param2,param3,param4,param5:TSysParam):TSysResul
end;
{$ifdef notsupported}
function FpSysCall(sysnr,param1,param2,param3,param4,param5,param6:TSysParam):TSysResult; assembler; [public,alias:'FPC_SYSCALL6'];
asm
end;
{$endif notsupported}

View File

@ -31,7 +31,5 @@ function Do_SysCall(sysnr,param1,param2:TSysParam):TSysResult; external name 'FP
function Do_SysCall(sysnr,param1,param2,param3:TSysParam):TSysResult; external name 'FPC_SYSCALL3';
function Do_SysCall(sysnr,param1,param2,param3,param4:TSysParam):TSysResult; external name 'FPC_SYSCALL4';
function Do_SysCall(sysnr,param1,param2,param3,param4,param5:TSysParam):TSysResult; external name 'FPC_SYSCALL5';
{$ifdef notsupported}
function Do_SysCall(sysnr,param1,param2,param3,param4,param5,param6:TSysParam):TSysResult; external name 'FPC_SYSCALL6';
{$endif notsupported}

View File

@ -354,7 +354,9 @@ begin
StackLength := CheckInitialStkLen(initialStkLen);
StackBottom := initialstkptr - StackLength;
{ Set up signals handlers (may be needed by init code to test cpu features) }
{$ifndef cpum68k}
InstallSignals;
{$endif cpum68k}
{$if defined(cpui386) or defined(cpuarm)}
fpc_cpucodeinit;
@ -374,6 +376,8 @@ begin
InitSystemThreads;
initvariantmanager;
{ restore original signal handlers in case this is a library }
{$ifndef cpum68k}
if IsLibrary then
RestoreOldSignalHandlers;
{$endif cpum68k}
end.

View File

@ -1474,6 +1474,245 @@ const
TCSAFLUSH = TCSETSF;
{$endif CPUMIPS}
{$ifdef CPUM68K}
const
TCGETS = $5401;
TCSETS = $5402;
TCSETSW = $5403;
TCSETSF = $5404;
TCGETA = $5405;
TCSETA = $5406;
TCSETAW = $5407;
TCSETAF = $5408;
TCSBRK = $5409;
TCXONC = $540A;
TCFLSH = $540B;
TIOCEXCL = $540C;
TIOCNXCL = $540D;
TIOCSCTTY = $540E;
TIOCGPGRP = $540F;
TIOCSPGRP = $5410;
TIOCOUTQ = $5411;
TIOCSTI = $5412;
TIOCGWINSZ = $5413;
TIOCSWINSZ = $5414;
TIOCMGET = $5415;
TIOCMBIS = $5416;
TIOCMBIC = $5417;
TIOCMSET = $5418;
TIOCGSOFTCAR = $5419;
TIOCSSOFTCAR = $541A;
FIONREAD = $541B;
TIOCINQ = FIONREAD;
TIOCLINUX = $541C;
TIOCCONS = $541D;
TIOCGSERIAL = $541E;
TIOCSSERIAL = $541F;
TIOCPKT = $5420;
FIONBIO = $5421;
TIOCNOTTY = $5422;
TIOCSETD = $5423;
TIOCGETD = $5424;
TCSBRKP = $5425;
TIOCSBRK = $5427;
TIOCCBRK = $5428;
TIOCGSID = $5429;
TIOCGRS485 = $542E;
TIOCSRS485 = $542F;
TCGETX = $5432;
TCSETX = $5433;
TCSETXF = $5434;
TCSETXW = $5435;
TIOCVHANGUP = $5437;
FIONCLEX = $5450;
FIOCLEX = $5451;
FIOASYNC = $5452;
TIOCSERCONFIG = $5453;
TIOCSERGWILD = $5454;
TIOCSERSWILD = $5455;
TIOCGLCKTRMIOS = $5456;
TIOCSLCKTRMIOS = $5457;
TIOCSERGSTRUCT = $5458;
TIOCSERGETLSR = $5459;
TIOCSERGETMULTI = $545A;
TIOCSERSETMULTI = $545B;
TIOCMIWAIT = $545C;
TIOCGICOUNT = $545D;
{ c_cc characters }
VINTR = 0;
VQUIT = 1;
VERASE = 2;
VKILL = 3;
VEOF = 4;
VTIME = 5;
VMIN = 6;
VSWTC = 7;
VSTART = 8;
VSTOP = 9;
VSUSP = 10;
VEOL = 11;
VREPRINT = 12;
VDISCARD = 13;
VWERASE = 14;
VLNEXT = 15;
VEOL2 = 16;
{ c_iflag bits }
IGNBRK = &000001;
BRKINT = &000002;
IGNPAR = &000004;
PARMRK = &000010;
INPCK = &000020;
ISTRIP = &000040;
INLCR = &000100;
IGNCR = &000200;
ICRNL = &000400;
IUCLC = &001000;
IXON = &002000;
IXANY = &004000;
IXOFF = &010000;
IMAXBEL = &020000;
IUTF8 = &040000;
{ c_oflag bits }
OPOST = &000001;
OLCUC = &000002;
ONLCR = &000004;
OCRNL = &000010;
ONOCR = &000020;
ONLRET = &000040;
OFILL = &000100;
OFDEL = &000200;
NLDLY = &000400;
NL0 = &000000;
NL1 = &000400;
CRDLY = &003000;
CR0 = &000000;
CR1 = &001000;
CR2 = &002000;
CR3 = &003000;
TABDLY = &014000;
TAB0 = &000000;
TAB1 = &004000;
TAB2 = &010000;
TAB3 = &014000;
XTABS = &014000;
BSDLY = &020000;
BS0 = &000000;
BS1 = &020000;
VTDLY = &040000;
VT0 = &000000;
VT1 = &040000;
FFDLY = &100000;
FF0 = &000000;
FF1 = &100000;
{ c_cflag bit meaning }
CBAUD = &010017;
{ hang up }
B0 = &000000;
B50 = &000001;
B75 = &000002;
B110 = &000003;
B134 = &000004;
B150 = &000005;
B200 = &000006;
B300 = &000007;
B600 = &000010;
B1200 = &000011;
B1800 = &000012;
B2400 = &000013;
B4800 = &000014;
B9600 = &000015;
B19200 = &000016;
B38400 = &000017;
EXTA = B19200;
EXTB = B38400;
CSIZE = &000060;
CS5 = &000000;
CS6 = &000020;
CS7 = &000040;
CS8 = &000060;
CSTOPB = &000100;
CREAD = &000200;
PARENB = &000400;
PARODD = &001000;
HUPCL = &002000;
CLOCAL = &004000;
CBAUDEX = &010000;
BOTHER = &010000;
B57600 = &010001;
B115200 = &010002;
B230400 = &010003;
B460800 = &010004;
B500000 = &010005;
B576000 = &010006;
B921600 = &010007;
B1000000 = &010010;
B1152000 = &010011;
B1500000 = &010012;
B2000000 = &010013;
B2500000 = &010014;
B3000000 = &010015;
B3500000 = &010016;
B4000000 = &010017;
CIBAUD = &02003600000;
CMSPAR = &10000000000;
CRTSCTS = &20000000000;
IBSHIFT = 16;
{ c_lflag bits }
ISIG = &000001;
ICANON = &000002;
XCASE = &000004;
ECHO = &000010;
ECHOE = &000020;
ECHOK = &000040;
ECHONL = &000100;
NOFLSH = &000200;
TOSTOP = &000400;
ECHOCTL = &001000;
ECHOPRT = &002000;
ECHOKE = &004000;
FLUSHO = &010000;
PENDIN = &040000;
IEXTEN = &100000;
EXTPROC = &200000;
TCOOFF = 0;
TCOON = 1;
TCIOFF = 2;
TCION = 3;
TCIFLUSH = 0;
TCOFLUSH = 1;
TCIOFLUSH = 2;
TCSANOW = 0;
TCSADRAIN = 1;
TCSAFLUSH = 2;
{ modem lines }
TIOCM_LE = $001;
TIOCM_DTR = $002;
TIOCM_RTS = $004;
TIOCM_ST = $008;
TIOCM_SR = $010;
TIOCM_CTS = $020;
TIOCM_CAR = $040;
TIOCM_RNG = $080;
TIOCM_DSR = $100;
TIOCM_CD = TIOCM_CAR;
TIOCM_RI = TIOCM_RNG;
TIOCM_OUT1 = $2000;
TIOCM_OUT2 = $4000;
TIOCM_LOOP = $8000;
{$endif CPUM68K}
Type
winsize = record
ws_row,

View File

@ -19,7 +19,10 @@
{ Based on original code bt Florian Kl„mpfl for the 80x86. }
{*************************************************************************}
{ Edit by Sven: No m68k specific set routines for now (doesn't seem to be
compatible to the way FPC handles sets today anyway...) }
{$ifdef use_m68k_sets}
{ add the element b to the set pointed by p }
{ On entry }
{ a0 = pointer to set }
@ -418,4 +421,4 @@
@BIGMCOMPSETEND:
end;
end;
{$endif}