Ver Fonte

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 -

svenbarth há 13 anos atrás
pai
commit
322dbe5b65
5 ficheiros alterados com 247 adições e 6 exclusões
  1. 0 3
      rtl/linux/m68k/syscall.inc
  2. 0 2
      rtl/linux/m68k/syscallh.inc
  3. 4 0
      rtl/linux/system.pp
  4. 239 0
      rtl/linux/termios.inc
  5. 4 1
      rtl/m68k/set.inc

+ 0 - 3
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}

+ 0 - 2
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}
 

+ 4 - 0
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.

+ 239 - 0
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,

+ 4 - 1
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}