From bfb2c916dc0b1c64b55ce0140f6a9c7159a6b0f2 Mon Sep 17 00:00:00 2001
From: tom_at_work <tom_at_work@idefix.freepascal.org>
Date: Mon, 10 Oct 2005 23:45:57 +0000
Subject: [PATCH] * fixed problem with too large offsets in conditional jumps
 (see also rev 1161 for the PowerPC code) * updated sysnr.inc for PowerPC64
 from 2.6.11 kernel sources * fixed SigactionRec sa_flags field sizes, which
 improves signal handling for PowerPC64 platform

git-svn-id: trunk@1352 -
---
 compiler/powerpc64/aasmcpu.pas |  88 +++++-
 compiler/psub.pas              |   6 +-
 rtl/linux/powerpc64/sighnd.inc |   7 +
 rtl/linux/powerpc64/sysnr.inc  | 530 +++++++++++++++++----------------
 rtl/linux/signal.inc           |   4 +-
 5 files changed, 373 insertions(+), 262 deletions(-)

diff --git a/compiler/powerpc64/aasmcpu.pas b/compiler/powerpc64/aasmcpu.pas
index b45ecbc10f..c6afb756a6 100644
--- a/compiler/powerpc64/aasmcpu.pas
+++ b/compiler/powerpc64/aasmcpu.pas
@@ -106,9 +106,11 @@ procedure DoneAsm;
 function spilling_create_load(const ref: treference; r: tregister): tai;
 function spilling_create_store(r: tregister; const ref: treference): tai;
 
+procedure fixup_jmps(list: taasmoutput);
+
 implementation
 
-uses cutils;
+uses cutils, cclasses;
 
 {*****************************************************************************
                                  taicpu Constructors
@@ -405,6 +407,90 @@ procedure DoneAsm;
 begin
 end;
 
+procedure fixup_jmps(list: taasmoutput);
+var
+  p: tai;
+  newjmp: taicpu;
+  labelpositions: tlist;
+  instrpos: ptrint;
+  l: tasmlabel;
+  inserted_something: boolean;
+begin
+  // if certainly not enough instructions to cause an overflow, don't bother
+  if (list.count <= (high(smallint) div 4)) then
+    exit;
+  labelpositions := tlist.create;
+  p := tai(list.first);
+  instrpos := 1;
+  // record label positions
+  while assigned(p) do
+    begin
+      if p.typ = ait_label then
+        begin
+          if (tai_label(p).l.labelnr > labelpositions.count) then
+            labelpositions.count := tai_label(p).l.labelnr * 2;
+          labelpositions[tai_label(p).l.labelnr] := pointer(instrpos);
+        end;
+      if p.typ = ait_instruction then
+        inc(instrpos);
+      p := tai(p.next);
+    end;
+
+  // check and fix distances
+  repeat
+    inserted_something := false;
+    p := tai(list.first);
+    instrpos := 1;
+    while assigned(p) do
+      begin
+        case p.typ of
+          ait_label:
+            // update labelposition in case it changed due to insertion
+            // of jumps
+            begin
+              // can happen because of newly inserted labels
+              if (tai_label(p).l.labelnr > labelpositions.count) then
+                labelpositions.count := tai_label(p).l.labelnr * 2;
+              labelpositions[tai_label(p).l.labelnr] := pointer(instrpos);
+            end;
+          ait_instruction:
+            begin
+              inc(instrpos);
+              case taicpu(p).opcode of
+                A_BC:
+                  if (taicpu(p).oper[0]^.typ = top_ref) and
+                    assigned(taicpu(p).oper[0]^.ref^.symbol) and
+                    (taicpu(p).oper[0]^.ref^.symbol is tasmlabel) and
+                    (labelpositions[tasmlabel(taicpu(p).oper[0]^.ref^.symbol).labelnr] <> NIL) and
+                    (ptruint(abs(ptrint(labelpositions[tasmlabel(taicpu(p).oper[0]^.ref^.symbol).labelnr]-instrpos)) - (low(smallint) div 4)) > ptruint((high(smallint) - low(smallint)) div 4)) then
+                    begin
+                      // add a new label after this jump
+                      objectlibrary.getjumplabel(l);
+                      list.insertafter(tai_label.create(l),p);
+                      // add a new unconditional jump between this jump and the label
+                      newjmp := taicpu.op_sym(A_B,taicpu(p).oper[0]^.ref^.symbol);
+                      newjmp.is_jmp := true;
+                      newjmp.fileinfo := taicpu(p).fileinfo;
+                      list.insertafter(newjmp,p);
+                      inc(instrpos);
+                      // change the conditional jump to point to the newly inserted label
+                      tasmlabel(taicpu(p).oper[0]^.ref^.symbol).decrefs;
+                      taicpu(p).oper[0]^.ref^.symbol := l;
+                      l.increfs;
+                      // and invert its condition code
+                      taicpu(p).condition := inverse_cond(taicpu(p).condition);
+                      // we inserted an instruction, so will have to check everything again
+                      inserted_something := true;
+                    end;
+              end;
+            end;
+        end;
+        p := tai(p.next);
+      end;
+  until not inserted_something;
+  labelpositions.free;
+end;
+
 begin
   cai_align := tai_align;
   cai_cpu := taicpu;
diff --git a/compiler/psub.pas b/compiler/psub.pas
index a69780d5f8..e82db30242 100644
--- a/compiler/psub.pas
+++ b/compiler/psub.pas
@@ -97,7 +97,7 @@ implementation
        { codegen }
        tgobj,cgobj,dbgbase,
        ncgutil,regvars
-{$if defined(arm) or defined(powerpc)}
+{$if defined(arm) or defined(powerpc) or defined(powerpc64)}
        ,aasmcpu
 {$endif arm}
        {$ifndef NOOPT}
@@ -852,7 +852,9 @@ implementation
 {$ifdef POWERPC}
             fixup_jmps(aktproccode);
 {$endif POWERPC}
-
+{$ifdef POWERPC64}
+            fixup_jmps(aktproccode);
+{$endif POWERPC64}
             { insert line debuginfo }
             if (cs_debuginfo in aktmoduleswitches) or
                (cs_use_lineinfo in aktglobalswitches) then
diff --git a/rtl/linux/powerpc64/sighnd.inc b/rtl/linux/powerpc64/sighnd.inc
index a680a2f009..0f70825adf 100644
--- a/rtl/linux/powerpc64/sighnd.inc
+++ b/rtl/linux/powerpc64/sighnd.inc
@@ -22,7 +22,9 @@ var
 {  fpustate: longint; }
 begin
   res:=0;
+  {$IFDEF EXCDEBUG}
   writeln('signaltorunerror');
+  {$ENDIF}
   { exception flags are turned off by kernel }
   fpc_enable_ppc_fpu_exceptions;
   case sig of
@@ -47,6 +49,11 @@ begin
     SIGSEGV :
         res:=216;
   end;
+  {$IFDEF EXCDEBUG}
+  writeln('sig = ', sig);
+  writeln('siginfo = ', hexstr(ptrint(siginfo), sizeof(siginfo)*2));
+  writeln('sigcontext = ', hexstr(ptrint(sigcontext), sizeof(sigcontext)*2));
+  {$ENDIF}
   { give runtime error at the position where the signal was raised }
   if res<>0 then
     HandleErrorAddrFrame(res,pointer(SigContext^.pt_regs^.nip),pointer(SigContext^.pt_regs^.gpr[1]));
diff --git a/rtl/linux/powerpc64/sysnr.inc b/rtl/linux/powerpc64/sysnr.inc
index 66ce72bd78..285c15836c 100644
--- a/rtl/linux/powerpc64/sysnr.inc
+++ b/rtl/linux/powerpc64/sysnr.inc
@@ -1,260 +1,276 @@
-{
-    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.
-
- **********************************************************************}
-
-
-{
-* This file contains the system call numbers.
+{ 
+  Automatically converted by H2Pas 1.0.0 from 
+  /usr/include/asm-ppc64/unistd.h
+  The following command line parameters were used:
+    unistd.h
 }
 
-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;
 
+{* 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;  
+  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_vm86 = 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 for Andrew File System  }
+  syscall_nr_afs_syscall = 137;  
+  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_query_module = 166;  
+  syscall_nr_poll = 167;  
+  syscall_nr_nfsservctl = 168;  
+  syscall_nr_setresgid = 169;  
+  syscall_nr_getresgid = 170;  
+  syscall_nr_prctl = 171;  
+  syscall_nr_rt_sigreturn = 172;  
+  syscall_nr_rt_sigaction = 173;  
+  syscall_nr_rt_sigprocmask = 174;  
+  syscall_nr_rt_sigpending = 175;  
+  syscall_nr_rt_sigtimedwait = 176;  
+  syscall_nr_rt_sigqueueinfo = 177;  
+  syscall_nr_rt_sigsuspend = 178;  
+  syscall_nr_pread = 179;  
+  syscall_nr_pwrite = 180;  
+  syscall_nr_chown = 181;  
+  syscall_nr_getcwd = 182;  
+  syscall_nr_capget = 183;  
+  syscall_nr_capset = 184;  
+  syscall_nr_sigaltstack = 185;  
+  syscall_nr_sendfile = 186;  
+  { some people actually want streams  }
+  syscall_nr_getpmsg = 187;  
+  { some people actually want streams  }
+  syscall_nr_putpmsg = 188;  
+  syscall_nr_vfork = 189;  
+  { SuS compliant getrlimit  }
+  syscall_nr_ugetrlimit = 190;  
+  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_pciconfig_read = 198;  
+  syscall_nr_pciconfig_write = 199;  
+  syscall_nr_pciconfig_iobase = 200;  
+  syscall_nr_multiplexer = 201;  
+  syscall_nr_getdents64 = 202;  
+  syscall_nr_pivot_root = 203;  
+  syscall_nr_fcntl64 = 204;  
+  syscall_nr_madvise = 205;  
+  syscall_nr_mincore = 206;  
+  syscall_nr_gettid = 207;  
+  syscall_nr_tkill = 208;  
+  syscall_nr_setxattr = 209;  
+  syscall_nr_lsetxattr = 210;  
+  syscall_nr_fsetxattr = 211;  
+  syscall_nr_getxattr = 212;  
+  syscall_nr_lgetxattr = 213;  
+  syscall_nr_fgetxattr = 214;  
+  syscall_nr_listxattr = 215;  
+  syscall_nr_llistxattr = 216;  
+  syscall_nr_flistxattr = 217;  
+  syscall_nr_removexattr = 218;  
+  syscall_nr_lremovexattr = 219;  
+  syscall_nr_fremovexattr = 220;  
+  syscall_nr_futex = 221;  
+  syscall_nr_sched_setaffinity = 222;  
+  syscall_nr_sched_getaffinity = 223;  
+  { 224 currently unused  }
+  syscall_nr_tuxcall = 225;  
+  syscall_nr_sendfile64 = 226;  
+  syscall_nr_io_setup = 227;  
+  syscall_nr_io_destroy = 228;  
+  syscall_nr_io_getevents = 229;  
+  syscall_nr_io_submit = 230;  
+  syscall_nr_io_cancel = 231;  
+  syscall_nr_set_tid_address = 232;  
+  syscall_nr_fadvise64 = 233;  
+  syscall_nr_exit_group = 234;  
+  syscall_nr_lookup_dcookie = 235;  
+  syscall_nr_epoll_create = 236;  
+  syscall_nr_epoll_ctl = 237;  
+  syscall_nr_epoll_wait = 238;  
+  syscall_nr_remap_file_pages = 239;  
+  syscall_nr_timer_create = 240;  
+  syscall_nr_timer_settime = 241;  
+  syscall_nr_timer_gettime = 242;  
+  syscall_nr_timer_getoverrun = 243;  
+  syscall_nr_timer_delete = 244;  
+  syscall_nr_clock_settime = 245;  
+  syscall_nr_clock_gettime = 246;  
+  syscall_nr_clock_getres = 247;  
+  syscall_nr_clock_nanosleep = 248;  
+  syscall_nr_tgkill = 250;  
+  syscall_nr_utimes = 251;  
+  syscall_nr_rtas = 255;  
+  syscall_nr_mq_open = 262;  
+  syscall_nr_mq_unlink = 263;  
+  syscall_nr_mq_timedsend = 264;  
+  syscall_nr_mq_timedreceive = 265;  
+  syscall_nr_mq_notify = 266;  
+  syscall_nr_mq_getsetattr = 267;  
+  syscall_nr_kexec_load = 268;  
+  syscall_nr_add_key = 269;  
+  syscall_nr_request_key = 270;  
+  syscall_nr_keyctl = 271;  
+  syscall_nr_waitid = 272;  
diff --git a/rtl/linux/signal.inc b/rtl/linux/signal.inc
index a0e3d649c9..86daed6f7b 100644
--- a/rtl/linux/signal.inc
+++ b/rtl/linux/signal.inc
@@ -193,12 +193,12 @@ type
   SigActionRec = packed record  // this is temporary for the migration
     sa_handler : SigActionHandler;
    {$ifdef NEWSIGNAL}
-    Sa_Flags    : cuint;
+    Sa_Flags    : culong;
     Sa_restorer : SignalRestorer; { Obsolete - Don't use }
     Sa_Mask     : SigSet;
    {$else NEWSIGNAL}
     Sa_Mask     : SigSet;
-    Sa_Flags    : Longint;
+    Sa_Flags    : cuLong;
     Sa_restorer : SignalRestorer; { Obsolete - Don't use }
    {$endif NEWSIGNAL}
   end;