Bladeren bron

* made system unit on m68k-linux compilable

git-svn-id: trunk@5266 -
florian 19 jaren geleden
bovenliggende
commit
b07cd83892

+ 7 - 1
.gitattributes

@@ -4633,8 +4633,12 @@ rtl/linux/m68k/gprt0.as -text
 rtl/linux/m68k/gprt21.as -text
 rtl/linux/m68k/prt0.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/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/osdefs.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/setjump.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/Makefile 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.
 
     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,
     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;
 
 
+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.
+
+ **********************************************************************}
+
+