summaryrefslogtreecommitdiff
path: root/rtl
diff options
context:
space:
mode:
authorsvenbarth <svenbarth@3ad0048d-3df7-0310-abae-a5850022a9f2>2012-10-18 20:12:02 +0000
committersvenbarth <svenbarth@3ad0048d-3df7-0310-abae-a5850022a9f2>2012-10-18 20:12:02 +0000
commit613c44de75834e735ab4a1abf05cf3a597b30a74 (patch)
treed8290e65d4e5b2a8455cafac468c894ef2864f0d /rtl
parentb4a55ac38a9e09dd3333e2895bd45295035685f1 (diff)
downloadfpc-613c44de75834e735ab4a1abf05cf3a597b30a74.tar.gz
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: http://svn.freepascal.org/svn/fpc/trunk@22743 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'rtl')
-rw-r--r--rtl/linux/m68k/syscall.inc3
-rw-r--r--rtl/linux/m68k/syscallh.inc2
-rw-r--r--rtl/linux/system.pp4
-rw-r--r--rtl/linux/termios.inc239
-rw-r--r--rtl/m68k/set.inc5
5 files changed, 247 insertions, 6 deletions
diff --git a/rtl/linux/m68k/syscall.inc b/rtl/linux/m68k/syscall.inc
index adb3f4bc2b..9ca12158d9 100644
--- a/rtl/linux/m68k/syscall.inc
+++ b/rtl/linux/m68k/syscall.inc
@@ -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}
diff --git a/rtl/linux/m68k/syscallh.inc b/rtl/linux/m68k/syscallh.inc
index 1011705e7d..61186cfb7e 100644
--- a/rtl/linux/m68k/syscallh.inc
+++ b/rtl/linux/m68k/syscallh.inc
@@ -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}
diff --git a/rtl/linux/system.pp b/rtl/linux/system.pp
index e2ce78a816..5ebaa94299 100644
--- a/rtl/linux/system.pp
+++ b/rtl/linux/system.pp
@@ -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.
diff --git a/rtl/linux/termios.inc b/rtl/linux/termios.inc
index 3e4c14e5ff..78cfb03b29 100644
--- a/rtl/linux/termios.inc
+++ b/rtl/linux/termios.inc
@@ -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,
diff --git a/rtl/m68k/set.inc b/rtl/m68k/set.inc
index 62c2c9fe61..aa09190d7c 100644
--- a/rtl/m68k/set.inc
+++ b/rtl/m68k/set.inc
@@ -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}