Browse Source

* made system unit on m68k-linux compilable

git-svn-id: trunk@5266 -
florian 19 năm trước cách đây
mục cha
commit
b07cd83892

+ 7 - 1
.gitattributes

@@ -4633,8 +4633,12 @@ rtl/linux/m68k/gprt0.as -text
 rtl/linux/m68k/gprt21.as -text
 rtl/linux/m68k/gprt21.as -text
 rtl/linux/m68k/prt0.as -text
 rtl/linux/m68k/prt0.as -text
 rtl/linux/m68k/prt1.as -text
 rtl/linux/m68k/prt1.as -text
-rtl/linux/m68k/signal.inc svneol=native#text/plain
+rtl/linux/m68k/sighnd.inc svneol=native#text/plain
+rtl/linux/m68k/sighndh.inc svneol=native#text/plain
 rtl/linux/m68k/stat.inc svneol=native#text/plain
 rtl/linux/m68k/stat.inc svneol=native#text/plain
+rtl/linux/m68k/syscall.inc svneol=native#text/plain
+rtl/linux/m68k/syscallh.inc svneol=native#text/plain
+rtl/linux/m68k/sysnr.inc svneol=native#text/plain
 rtl/linux/oldlinux.pp svneol=native#text/plain
 rtl/linux/oldlinux.pp svneol=native#text/plain
 rtl/linux/osdefs.inc svneol=native#text/plain
 rtl/linux/osdefs.inc svneol=native#text/plain
 rtl/linux/osmacro.inc svneol=native#text/plain
 rtl/linux/osmacro.inc svneol=native#text/plain
@@ -4717,6 +4721,8 @@ rtl/m68k/readme -text
 rtl/m68k/set.inc svneol=native#text/plain
 rtl/m68k/set.inc svneol=native#text/plain
 rtl/m68k/setjump.inc svneol=native#text/plain
 rtl/m68k/setjump.inc svneol=native#text/plain
 rtl/m68k/setjumph.inc svneol=native#text/plain
 rtl/m68k/setjumph.inc svneol=native#text/plain
+rtl/m68k/strings.inc svneol=native#text/plain
+rtl/m68k/stringss.inc svneol=native#text/plain
 rtl/macos/MPWmake -text
 rtl/macos/MPWmake -text
 rtl/macos/Makefile svneol=native#text/plain
 rtl/macos/Makefile svneol=native#text/plain
 rtl/macos/Makefile.fpc svneol=native#text/plain
 rtl/macos/Makefile.fpc svneol=native#text/plain

+ 1 - 1
rtl/linux/i386/syscall.inc

@@ -4,7 +4,7 @@
     member of the Free Pascal development team.
     member of the Free Pascal development team.
 
 
     The syscalls for the new RTL, moved to platform dependant dir.
     The syscalls for the new RTL, moved to platform dependant dir.
-    Old linux calling convention is stil kept.
+    Old linux calling convention is still kept.
 
 
     See the file COPYING.FPC, included in this distribution,
     See the file COPYING.FPC, included in this distribution,
     for details about the copyright.
     for details about the copyright.

+ 116 - 0
rtl/linux/m68k/sighnd.inc

@@ -0,0 +1,116 @@
+{
+    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
+  { Bits in control register }
+  RoundingMode = $30;
+  RoundingPrecision = $c0;
+  InexactDecimal = $100;
+  InexactOperation = $200;
+  DivideByZero = $400;
+  UnderFlow = $800;
+  OverFlow = $1000;
+  OperandError = $2000;
+  SignalingNaN = $4000;
+  BranchOnUnordered = $800;
+
+  fpucw : longint = {InexactOperation or }DivideByZero or
+    OverFlow or OperandError or
+    SignalingNaN or BranchOnUnordered;
+  fpust : longint = 0;
+  { Bits in status register }
+  FPU_Invalid = $80;
+  FPU_Denormal = $8;
+  FPU_DivisionByZero = $10;
+  FPU_Overflow = $40;
+  FPU_Underflow = $20;
+  { m68k is not stack based }
+  FPU_StackUnderflow = $0;
+  FPU_StackOverflow = $0;
+  FPU_All = $f8;
+
+
+Procedure ResetFPU;
+begin
+  asm
+    fmove.l fpucw,fpcr
+    fmove.l fpust,fpsr
+  end;
+end;
+
+
+function GetFPUState(const SigContext : TSigContext) : longint;
+begin
+  GetfpuState:=SigContext.psr;
+{$ifdef SYSTEM_DEBUG}
+  Writeln(stderr,'FpuState = ',GetFpuState);
+{$endif SYSTEM_DEBUG}
+end;
+
+
+
+procedure SignalToRunerror(Sig: longint; Info : pointer; var SigContext: TSigContext); 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;
+          ResetFPU;
+        end;
+    SIGILL,
+    SIGBUS,
+    SIGSEGV :
+        res:=216;
+  end;
+
+  reenable_signal(sig);
+
+  { give runtime error at the position where the signal was raised }
+  if res<>0 then
+   begin
+     { HandleErrorAddrFrame(res,SigContext.sc_pc,SigContext.sc_fp);}
+     { fp is not saved in context record :( }
+     HandleError(res);
+     HandleError(res);
+   end;
+end;

+ 57 - 0
rtl/linux/m68k/sighndh.inc

@@ -0,0 +1,57 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 1999-2000 by Pierre Muller,
+    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
+  { REMARK: floating point regs are defined as arrays of
+    3 longints; I don't know if C does align this to
+    16 byte boundaries for each element of the array PM }
+  { If C does we might need to define this as
+    array from 0 to 3 }
+
+  tfpreg = array[0..2] of longint;
+
+  pfpstate = ^tfpstate;
+  tfpstate = record
+           pcr,psr,fpiaddr : longint;
+	   fpreg : array [0..7] of tfpreg;
+  end;
+
+  { as defined in asm_m68k/signal.h }
+  Stack_T = Record
+    ss_sp : pointer;
+    ss_flags : longint;
+    ss_size : size_t;
+  end;
+
+  { SigContextRec corresponds to the ucontext record
+    in linux asm-m68k/ucontext.h include file }
+  PSigContext = ^TSigContext;
+  TSigContext = record
+    uc_flags : cardinal;
+    uc_link : pSigContext;
+    uc_stack : stack_t; { what's that ?? }
+    { fields from 'version' to 'pc'
+      correspond to the mcontext struct in asm-m68k/ucontext.h file }
+    version : longint; { SigContext version check }
+    { 18 general registers }
+    d0,d1,d2,d3,d4,d5,d6,d7 : cardinal;
+    a0,a1,a2,a3,a4,a5 : cardinal;
+    fp,sp,ps,pc : cardinal;
+    { fields from 'pcr' to 'fpreg'
+      are floating point part }
+    pcr,psr,fpiaddr : longint;
+    fpreg : array[0..7] of tfpreg; { how is this aligned ?? }
+    filler : array[0..79] of cardinal;
+    sigmask : TSigSet;
+  end;

+ 0 - 220
rtl/linux/m68k/signal.inc

@@ -1,220 +0,0 @@
-{
-    $Id: signal.inc,v 1.1.2.2 2002/10/10 19:31:28 pierre Exp $
-    This file is part of the Free Pascal run time library.
-    Copyright (c) 1999-2000 by Pierre Muller,
-    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.
-
- **********************************************************************}
-
-{$packrecords C}
-{********************
-      Signal
-********************}
-
-Const
-  { For sending a signal }
-  SA_NOCLDSTOP = 1;
-  SA_SHIRQ     = $04000000;
-  SA_STACK     = $08000000;
-  SA_RESTART   = $10000000;
-  SA_INTERRUPT = $20000000;
-  SA_NOMASK    = $40000000;
-  SA_ONESHOT   = $80000000;
-
-  SIG_BLOCK   = 0;
-  SIG_UNBLOCK = 1;
-  SIG_SETMASK = 2;
-
-  SIG_DFL = 0 ;
-  SIG_IGN = 1 ;
-  SIG_ERR = -1 ;
-
-  SIGHUP     = 1;
-  SIGINT     = 2;
-  SIGQUIT    = 3;
-  SIGILL     = 4;
-  SIGTRAP    = 5;
-  SIGABRT    = 6;
-  SIGIOT     = 6;
-  SIGBUS     = 7;
-  SIGFPE     = 8;
-  SIGKILL    = 9;
-  SIGUSR1    = 10;
-  SIGSEGV    = 11;
-  SIGUSR2    = 12;
-  SIGPIPE    = 13;
-  SIGALRM    = 14;
-  SIGTerm    = 15;
-  SIGSTKFLT  = 16;
-  SIGCHLD    = 17;
-  SIGCONT    = 18;
-  SIGSTOP    = 19;
-  SIGTSTP    = 20;
-  SIGTTIN    = 21;
-  SIGTTOU    = 22;
-  SIGURG     = 23;
-  SIGXCPU    = 24;
-  SIGXFSZ    = 25;
-  SIGVTALRM  = 26;
-  SIGPROF    = 27;
-  SIGWINCH   = 28;
-  SIGIO      = 29;
-  SIGPOLL    = SIGIO;
-  SIGPWR     = 30;
-  SIGUNUSED  = 31;
-
-
-
-{ not sure this value is correct for m68k PM }
-const
-  SI_PAD_SIZE	= ((128 div sizeof(longint)) - 3);
-
-
-type
-  { REMARK: floating point regs are defined as arrays of
-    3 longints; I don't know if C does align this to
-    16 byte boundaries for each element of the array PM }
-  { If C does we might need to define this as
-    array from 0 to 3 }
-
-  tfpreg = array[0..2] of longint;
-
-  pfpstate = ^tfpstate;
-  tfpstate = record
-           pcr,psr,fpiaddr : longint;
-	   fpreg : array [0..7] of tfpreg;
-  end;
-
-  Size_T = cardinal;
-
-  SigSet  = Longint;
-  PSigSet = ^SigSet;
-
-  { as defined in asm_m68k/signal.h }
-  Stack_T = Record
-    ss_sp : pointer;
-    ss_flags : longint;
-    ss_size : size_t;
-  end;
-
-  { SigContextRec corresponds to the ucontext record
-    in linux asm-m68k/ucontext.h include file }
-  PSigContextRec = ^SigContextRec;
-  SigContextRec = record
-    uc_flags : cardinal;
-    uc_link : pSigContextRec;
-    uc_stack : stack_t; { what's that ?? }
-    { fields from 'version' to 'pc'
-      correspond to the mcontext struct in asm-m68k/ucontext.h file }
-    version : longint; { SigContext version check }
-    { 18 general registers }
-    d0,d1,d2,d3,d4,d5,d6,d7 : cardinal;
-    a0,a1,a2,a3,a4,a5 : cardinal;
-    fp,sp,ps,pc : cardinal;
-    { fields from 'pcr' to 'fpreg'
-      are floating point part }
-    pcr,psr,fpiaddr : longint;
-    fpreg : array[0..7] of tfpreg; { how is this aligned ?? }
-    filler : array[0..79] of cardinal;
-    sigmask : SigSet;
-  end;
-
-
-  PSigInfoRec = ^SigInfoRec;
-  SigInfoRec = record
-    si_signo: longint;
-    si_errno: longint;
-    si_code: longint;
-
-    case longint of
-      0:
-        (pad: array[0 .. SI_PAD_SIZE-1] of longint);
-      1: { kill }
-        ( kill: record
-            pid: longint;  { sender's pid }
-            uid : longint; { sender's uid }
-          end );
-      2: { POSIX.1b timers }
-        ( timer : record
-            timer1 : cardinal;
-            timer2 : cardinal;
-           end );
-      3: { POSIX.1b signals }
-        ( rt : record
-            pid : longint;    { sender's pid }
-            uid : longint;    { sender's uid }
-            sigval : longint;
-         end );
-      4: { SIGCHLD }
-        ( sigchld : record
-          pid : longint;    { which child }
-          uid : longint;    { sender's uid }
-          status : longint; { exit code }
-          utime : timeval;
-          stime : timeval;
-         end );
-      5: { SIGILL, SIGFPE, SIGSEGV, SIGBUS }
-        ( sigfault : record
-            addr : pointer;{ faulting insn/memory ref. }
-          end );
-      6:
-        ( sigpoll : record
-            band : longint; { POLL_IN, POLL_OUT, POLL_MSG }
-            fd : longint;
-          end );
-  end;
-
-
-  SignalHandler   = Procedure(Sig : Longint);cdecl;
-  PSignalHandler  = ^SignalHandler;
-  SignalRestorer  = Procedure;cdecl;
-  PSignalRestorer = ^SignalRestorer;
-  { the third argument is only a guess for now,
-    asm-m68k/signal.h gives only void * arg type PM }
-  TSigAction = procedure(Sig: Longint; SigInfoPtr : PSigInfoRec; SigContextPtr : PSigContextRec);cdecl;
-
-
-  SigActionRec = packed record
-    Handler  : record
-      case byte of
-        0: (Sh: SignalHandler);
-        1: (Sa: TSigAction);
-      end;
-    Sa_Mask     : SigSet;
-    Sa_Flags    : Longint;
-    Sa_restorer : SignalRestorer; { Obsolete - Don't use }
-  end;
-  PSigActionRec = ^SigActionRec;
-(*
-Procedure SigAction(Signum:Integer;Act,OldAct:PSigActionRec );
-{
-  Change action of process upon receipt of a signal.
-  Signum specifies the signal (all except SigKill and SigStop).
-  If Act is non-nil, it is used to specify the new action.
-  If OldAct is non-nil the previous action is saved there.
-}
-Var
-  sr : Syscallregs;
-begin
-  sr.reg2:=Signum;
-  sr.reg3:=Longint(act);
-  sr.reg4:=Longint(oldact);
-  SysCall(Syscall_nr_sigaction,sr);
-end; *)
-
-{
-  $Log: signal.inc,v $
-  Revision 1.1.2.2  2002/10/10 19:31:28  pierre
-   * update those files that are unused currently
-
-  Revision 1.1.2.1  2001/07/13 15:05:40  pierre
-   + first signal context tries
-
-}

+ 60 - 0
rtl/linux/m68k/syscall.inc

@@ -0,0 +1,60 @@
+{
+    Copyright (c) 2002 by the Free Pascal development team
+
+    Syscall implementation for linux m68k
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    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.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+
+}
+
+function FpSysCall(sysnr:TSysParam):TSysResult; assembler; [public,alias:'FPC_SYSCALL0'];
+  asm
+  end;
+
+
+function FpSysCall(sysnr,param1:TSysParam):TSysResult; assembler; [public,alias:'FPC_SYSCALL1'];
+  asm
+  end;
+
+
+function FpSysCall(sysnr,param1,param2:TSysParam):TSysResult; assembler; [public,alias:'FPC_SYSCALL2'];
+  asm
+  end;
+
+
+function FpSysCall(sysnr,param1,param2,param3:TSysParam):TSysResult; assembler; [public,alias:'FPC_SYSCALL3'];
+  asm
+  end;
+
+
+function FpSysCall(sysnr,param1,param2,param3,param4:TSysParam):TSysResult; assembler; [public,alias:'FPC_SYSCALL4'];
+  asm
+  end;
+
+
+function FpSysCall(sysnr,param1,param2,param3,param4,param5:TSysParam):TSysResult; assembler; [public,alias:'FPC_SYSCALL5'];
+  asm
+  end;
+
+
+{$ifdef notsupported}
+function FpSysCall(sysnr,param1,param2,param3,param4,param5,param6:TSysParam):TSysResult; assembler; [public,alias:'FPC_SYSCALL6'];
+  asm
+  end;
+
+
+{$endif notsupported}

+ 37 - 0
rtl/linux/m68k/syscallh.inc

@@ -0,0 +1,37 @@
+{
+    Copyright (c) 2002 by Marco van de Voort
+
+    Header for syscall in system unit for i386 *BSD.
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    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.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+
+}
+
+Type
+  TSysResult = longint;
+  TSysParam  = Longint;
+
+function Do_SysCall(sysnr:TSysParam):TSysResult; external name 'FPC_SYSCALL0';
+function Do_SysCall(sysnr,param1:TSysParam):TSysResult; external name 'FPC_SYSCALL1';
+function Do_SysCall(sysnr,param1,param2:TSysParam):TSysResult; external name 'FPC_SYSCALL2';
+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}
+

+ 497 - 0
rtl/linux/m68k/sysnr.inc

@@ -0,0 +1,497 @@
+{
+    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.
+
+    Syscall nrs for 2.4.18
+
+    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.
+
+ **********************************************************************}
+
+{$warning FIX ME!!!!}
+
+{
+* This file contains the system call numbers.
+}
+
+Const
+        syscall_nr_exit                 =  1;
+        syscall_nr_fork                 =  2;
+        syscall_nr_read                 =  3;
+        syscall_nr_write                =  4;
+        syscall_nr_open                 =  5;
+        syscall_nr_close                =  6;
+        syscall_nr_waitpid              =  7;
+        syscall_nr_creat                =  8;
+        syscall_nr_link                 =  9;
+        syscall_nr_unlink               = 10;
+        syscall_nr_execve               = 11;
+        syscall_nr_chdir                = 12;
+        syscall_nr_time                 = 13;
+        syscall_nr_mknod                = 14;
+        syscall_nr_chmod                = 15;
+        syscall_nr_lchown               = 16;
+        syscall_nr_break                = 17;
+        syscall_nr_oldstat              = 18;
+        syscall_nr_lseek                = 19;
+        syscall_nr_getpid               = 20;
+        syscall_nr_mount                = 21;
+        syscall_nr_umount               = 22;
+        syscall_nr_setuid               = 23;
+        syscall_nr_getuid               = 24;
+        syscall_nr_stime                = 25;
+        syscall_nr_ptrace               = 26;
+        syscall_nr_alarm                = 27;
+        syscall_nr_oldfstat             = 28;
+        syscall_nr_pause                = 29;
+        syscall_nr_utime                = 30;
+        syscall_nr_stty                 = 31;
+        syscall_nr_gtty                 = 32;
+        syscall_nr_access               = 33;
+        syscall_nr_nice                 = 34;
+        syscall_nr_ftime                = 35;
+        syscall_nr_sync                 = 36;
+        syscall_nr_kill                 = 37;
+        syscall_nr_rename               = 38;
+        syscall_nr_mkdir                = 39;
+        syscall_nr_rmdir                = 40;
+        syscall_nr_dup                  = 41;
+        syscall_nr_pipe                 = 42;
+        syscall_nr_times                = 43;
+        syscall_nr_prof                 = 44;
+        syscall_nr_brk                  = 45;
+        syscall_nr_setgid               = 46;
+        syscall_nr_getgid               = 47;
+        syscall_nr_signal               = 48;
+        syscall_nr_geteuid              = 49;
+        syscall_nr_getegid              = 50;
+        syscall_nr_acct                 = 51;
+        syscall_nr_umount2              = 52;
+        syscall_nr_lock                 = 53;
+        syscall_nr_ioctl                = 54;
+        syscall_nr_fcntl                = 55;
+        syscall_nr_mpx                  = 56;
+        syscall_nr_setpgid              = 57;
+        syscall_nr_ulimit               = 58;
+        syscall_nr_oldolduname          = 59;
+        syscall_nr_umask                = 60;
+        syscall_nr_chroot               = 61;
+        syscall_nr_ustat                = 62;
+        syscall_nr_dup2                 = 63;
+        syscall_nr_getppid              = 64;
+        syscall_nr_getpgrp              = 65;
+        syscall_nr_setsid               = 66;
+        syscall_nr_sigaction            = 67;
+        syscall_nr_sgetmask             = 68;
+        syscall_nr_ssetmask             = 69;
+        syscall_nr_setreuid             = 70;
+        syscall_nr_setregid             = 71;
+        syscall_nr_sigsuspend           = 72;
+        syscall_nr_sigpending           = 73;
+        syscall_nr_sethostname          = 74;
+        syscall_nr_setrlimit            = 75;
+        syscall_nr_getrlimit            = 76;   { Back compatible 2Gig limited rlimit }
+        syscall_nr_getrusage            = 77;
+        syscall_nr_gettimeofday         = 78;
+        syscall_nr_settimeofday         = 79;
+        syscall_nr_getgroups            = 80;
+        syscall_nr_setgroups            = 81;
+        syscall_nr_select               = 82;
+        syscall_nr_symlink              = 83;
+        syscall_nr_oldlstat             = 84;
+        syscall_nr_readlink             = 85;
+        syscall_nr_uselib               = 86;
+        syscall_nr_swapon               = 87;
+        syscall_nr_reboot               = 88;
+        syscall_nr_readdir              = 89;
+        syscall_nr_mmap                 = 90;
+        syscall_nr_munmap               = 91;
+        syscall_nr_truncate             = 92;
+        syscall_nr_ftruncate            = 93;
+        syscall_nr_fchmod               = 94;
+        syscall_nr_fchown               = 95;
+        syscall_nr_getpriority          = 96;
+        syscall_nr_setpriority          = 97;
+        syscall_nr_profil               = 98;
+        syscall_nr_statfs               = 99;
+        syscall_nr_fstatfs              = 100;
+        syscall_nr_ioperm               = 101;
+        syscall_nr_socketcall           = 102;
+        syscall_nr_syslog               = 103;
+        syscall_nr_setitimer            = 104;
+        syscall_nr_getitimer            = 105;
+        syscall_nr_stat                 = 106;
+        syscall_nr_lstat                = 107;
+        syscall_nr_fstat                = 108;
+        syscall_nr_olduname             = 109;
+        syscall_nr_iopl                 = 110;
+        syscall_nr_vhangup              = 111;
+        syscall_nr_idle                 = 112;
+        syscall_nr_vm86old              = 113;
+        syscall_nr_wait4                = 114;
+        syscall_nr_swapoff              = 115;
+        syscall_nr_sysinfo              = 116;
+        syscall_nr_ipc                  = 117;
+        syscall_nr_fsync                = 118;
+        syscall_nr_sigreturn            = 119;
+        syscall_nr_clone                = 120;
+        syscall_nr_setdomainname        = 121;
+        syscall_nr_uname                = 122;
+        syscall_nr_modify_ldt           = 123;
+        syscall_nr_adjtimex             = 124;
+        syscall_nr_mprotect             = 125;
+        syscall_nr_sigprocmask          = 126;
+        syscall_nr_create_module        = 127;
+        syscall_nr_init_module          = 128;
+        syscall_nr_delete_module        = 129;
+        syscall_nr_get_kernel_syms      = 130;
+        syscall_nr_quotactl             = 131;
+        syscall_nr_getpgid              = 132;
+        syscall_nr_fchdir               = 133;
+        syscall_nr_bdflush              = 134;
+        syscall_nr_sysfs                = 135;
+        syscall_nr_personality          = 136;
+        syscall_nr_afs_syscall          = 137; { Syscall for Andrew File System }
+        syscall_nr_setfsuid             = 138;
+        syscall_nr_setfsgid             = 139;
+        syscall_nr__llseek              = 140;
+        syscall_nr_getdents             = 141;
+        syscall_nr__newselect           = 142;
+        syscall_nr_flock                = 143;
+        syscall_nr_msync                = 144;
+        syscall_nr_readv                = 145;
+        syscall_nr_writev               = 146;
+        syscall_nr_getsid               = 147;
+        syscall_nr_fdatasync            = 148;
+        syscall_nr__sysctl              = 149;
+        syscall_nr_mlock                = 150;
+        syscall_nr_munlock              = 151;
+        syscall_nr_mlockall             = 152;
+        syscall_nr_munlockall           = 153;
+        syscall_nr_sched_setparam       = 154;
+        syscall_nr_sched_getparam       = 155;
+        syscall_nr_sched_setscheduler   = 156;
+        syscall_nr_sched_getscheduler   = 157;
+        syscall_nr_sched_yield          = 158;
+        syscall_nr_sched_get_priority_max       = 159;
+        syscall_nr_sched_get_priority_min       = 160;
+        syscall_nr_sched_rr_get_interval        = 161;
+        syscall_nr_nanosleep            = 162;
+        syscall_nr_mremap               = 163;
+        syscall_nr_setresuid            = 164;
+        syscall_nr_getresuid            = 165;
+        syscall_nr_vm86                 = 166;
+        syscall_nr_query_module         = 167;
+        syscall_nr_poll                 = 168;
+        syscall_nr_nfsservctl           = 169;
+        syscall_nr_setresgid            = 170;
+        syscall_nr_getresgid            = 171;
+        syscall_nr_prctl                = 172;
+        syscall_nr_rt_sigreturn         = 173;
+        syscall_nr_rt_sigaction         = 174;
+        syscall_nr_rt_sigprocmask       = 175;
+        syscall_nr_rt_sigpending        = 176;
+        syscall_nr_rt_sigtimedwait      = 177;
+        syscall_nr_rt_sigqueueinfo      = 178;
+        syscall_nr_rt_sigsuspend        = 179;
+        syscall_nr_pread                = 180;
+        syscall_nr_pwrite               = 181;
+        syscall_nr_chown                = 182;
+        syscall_nr_getcwd               = 183;
+        syscall_nr_capget               = 184;
+        syscall_nr_capset               = 185;
+        syscall_nr_sigaltstack          = 186;
+        syscall_nr_sendfile             = 187;
+        syscall_nr_getpmsg              = 188;  { some people actually want streams }
+        syscall_nr_putpmsg              = 189;  { some people actually want streams }
+        syscall_nr_vfork                = 190;
+        syscall_nr_ugetrlimit           = 191;  { SuS compliant getrlimit }
+        syscall_nr_mmap2                = 192;
+        syscall_nr_truncate64           = 193;
+        syscall_nr_ftruncate64          = 194;
+        syscall_nr_stat64               = 195;
+        syscall_nr_lstat64              = 196;
+        syscall_nr_fstat64              = 197;
+        syscall_nr_lchown32             = 198;
+        syscall_nr_getuid32             = 199;
+        syscall_nr_getgid32             = 200;
+        syscall_nr_geteuid32            = 201;
+        syscall_nr_getegid32            = 202;
+        syscall_nr_setreuid32           = 203;
+        syscall_nr_setregid32           = 204;
+        syscall_nr_getgroups32          = 205;
+        syscall_nr_setgroups32          = 206;
+        syscall_nr_fchown32             = 207;
+        syscall_nr_setresuid32          = 208;
+        syscall_nr_getresuid32          = 209;
+        syscall_nr_setresgid32          = 210;
+        syscall_nr_getresgid32          = 211;
+        syscall_nr_chown32              = 212;
+        syscall_nr_setuid32             = 213;
+        syscall_nr_setgid32             = 214;
+        syscall_nr_setfsuid32           = 215;
+        syscall_nr_setfsgid32           = 216;
+        syscall_nr_pivot_root           = 217;
+        syscall_nr_mincore              = 218;
+        syscall_nr_madvise              = 219;
+        syscall_nr_madvise1             = 219;  { delete when C lib stub is removed }
+        syscall_nr_getdents64           = 220;
+        syscall_nr_fcntl64              = 221;
+        syscall_nr_security             = 223;  { syscall for security modules }
+        syscall_nr_gettid               = 224;
+        syscall_nr_readahead            = 225;
+        syscall_nr_setxattr             = 226;
+        syscall_nr_lsetxattr            = 227;
+        syscall_nr_fsetxattr            = 228;
+        syscall_nr_getxattr             = 229;
+        syscall_nr_lgetxattr            = 230;
+        syscall_nr_fgetxattr            = 231;
+        syscall_nr_listxattr            = 232;
+        syscall_nr_llistxattr           = 233;
+        syscall_nr_flistxattr           = 234;
+        syscall_nr_removexattr          = 235;
+        syscall_nr_lremovexattr         = 236;
+        syscall_nr_fremovexattr         = 237;
+        syscall_nr_tkill                 = 238;
+        syscall_nr_sendfile64            = 239;
+        syscall_nr_futex                 = 240;
+        syscall_nr_sched_setaffinity     = 241;
+        syscall_nr_sched_getaffinity     = 242;
+        syscall_nr_set_thread_area       = 243;
+        syscall_nr_get_thread_area       = 244;
+        syscall_nr_io_setup              = 245;
+        syscall_nr_io_destroy            = 246;
+        syscall_nr_io_getevents          = 247;
+        syscall_nr_io_submit             = 248;
+        syscall_nr_io_cancel             = 249;
+        syscall_nr_fadvise64             = 250;
+        syscall_nr_set_zone_reclaim      = 251;
+        syscall_nr_exit_group            = 252;
+        syscall_nr_lookup_dcookie        = 253;
+        syscall_nr_epoll_create          = 254;
+        syscall_nr_epoll_ctl             = 255;
+        syscall_nr_epoll_wait            = 256;
+        syscall_nr_remap_file_pages      = 257;
+        syscall_nr_set_tid_address       = 258;
+        syscall_nr_timer_create          = 259;
+        syscall_nr_timer_settime         = syscall_nr_timer_create+1;
+        syscall_nr_timer_gettime         = syscall_nr_timer_create+2;
+        syscall_nr_timer_getoverrun      = syscall_nr_timer_create+3;
+        syscall_nr_timer_delete          = syscall_nr_timer_create+4;
+        syscall_nr_clock_settime         = syscall_nr_timer_create+5;
+        syscall_nr_clock_gettime         = syscall_nr_timer_create+6;
+        syscall_nr_clock_getres          = syscall_nr_timer_create+7;
+        syscall_nr_clock_nanosleep       = syscall_nr_timer_create+8;
+        syscall_nr_statfs64              = 268;
+        syscall_nr_fstatfs64             = 269;
+        syscall_nr_tgkill                = 270;
+        syscall_nr_utimes                = 271;
+        syscall_nr_fadvise64_64          = 272;
+        syscall_nr_vserver               = 273;
+        syscall_nr_mbind                 = 274;
+        syscall_nr_get_mempolicy         = 275;
+        syscall_nr_set_mempolicy         = 276;
+        syscall_nr_mq_open               = 277;
+        syscall_nr_mq_unlink             = syscall_nr_mq_open+1;
+        syscall_nr_mq_timedsend          = syscall_nr_mq_open+2;
+        syscall_nr_mq_timedreceive       = syscall_nr_mq_open+3;
+        syscall_nr_mq_notify             = syscall_nr_mq_open+4;
+        syscall_nr_mq_getsetattr         = syscall_nr_mq_open+5;
+        syscall_nr_sys_kexec_load        = 283;
+        syscall_nr_waitid                = 284;
+        {   syscall_sys_setaltroot     285 }
+        syscall_nr_add_key               = 286;
+        syscall_nr_request_key           = 287;
+        syscall_nr_keyctl                = 288;
+        syscall_nr_ioprio_set            = 289;
+        syscall_nr_ioprio_get            = 290;
+        syscall_nr_inotify_init          = 291;
+        syscall_nr_inotify_add_watch     = 292;
+        syscall_nr_inotify_rm_watch      = 293;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 28 - 0
rtl/m68k/m68k.inc

@@ -314,3 +314,31 @@ function abs(l : longint) : longint;
   end;
   end;
 
 
 
 
+function InterLockedDecrement (var Target: longint) : longint;
+  begin
+  {$warning FIX ME}
+  end;
+
+
+function InterLockedIncrement (var Target: longint) : longint;
+  begin
+  {$warning FIX ME}
+  end;
+
+
+function InterLockedExchange (var Target: longint;Source : longint) : longint;
+  begin
+  {$warning FIX ME}
+  end;
+
+
+function InterLockedExchangeAdd (var Target: longint;Source : longint) : longint;
+  begin
+  {$warning FIX ME}
+  end;
+
+
+function InterlockedCompareExchange(var Target: longint; NewValue: longint; Comperand: longint): longint;
+  begin
+  {$warning FIX ME}
+  end;

+ 18 - 0
rtl/m68k/strings.inc

@@ -0,0 +1,18 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2000 by Jonas Maebe, member of the
+    Free Pascal development team
+
+    Processor dependent part of strings.pp, that can be shared with
+    sysutils unit.
+
+    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.
+
+ **********************************************************************}
+
+

+ 18 - 0
rtl/m68k/stringss.inc

@@ -0,0 +1,18 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 1999-2000 by Jonas Maebe, member of the
+    Free Pascal development team
+
+    Processor dependent part of strings.pp, not shared with
+    sysutils unit.
+
+    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.
+
+ **********************************************************************}
+
+