Browse Source

* started to fix simple mips syscalls
* corrected SA_* values

git-svn-id: trunk@20326 -

florian 13 years ago
parent
commit
16e79969aa
2 changed files with 26 additions and 186 deletions
  1. 15 181
      rtl/linux/mips/syscall.inc
  2. 11 5
      rtl/linux/signal.inc

+ 15 - 181
rtl/linux/mips/syscall.inc

@@ -26,19 +26,6 @@ function Fpfork : pid_t;  [public, alias : 'FPC_SYSC_FORK'];assembler;
 var
   temp: longint;
 asm
-  sw  $4,0($23)
-  sw  $5,-4($23)
-  sw  $6,-8($23)
-  sw  $7,-12($23)
-  sw  $8,-16($23)
-  sw  $9,-20($23)
-  sw  $10,-24($23)
-  sw  $11,-28($23)
-  sw  $12,-32($23)
-  sw  $13,-36($23)
-  sw  $14,-40($23)
-  addiu  $23,$23,-44
-
   li  $2,4002
   syscall
   nop
@@ -65,20 +52,6 @@ asm
 .LFailed:
   li    $2,-1
 .LDone:
-
-  addiu  $23,$23,44
-  lw  $4,0($23)
-  lw  $5,-4($23)
-  lw  $6,-8($23)
-  lw  $7,-12($23)
-  lw  $8,-16($23)
-  lw  $9,-20($23)
-  lw  $10,-24($23)
-  lw  $11,-28($23)
-  lw  $12,-32($23)
-  lw  $13,-36($23)
-  lw  $14,-40($23)
-
 end;
 
 
@@ -94,20 +67,7 @@ function FpSysCall(sysnr:TSysParam):TSysResult; assembler;[public,alias:'FPC_SYS
 var
   temp: longint;
 asm
-  sw  $4,0($23)
-  sw  $5,-4($23)
-  sw  $6,-8($23)
-  sw  $7,-12($23)
-  sw  $8,-16($23)
-  sw  $9,-20($23)
-  sw  $10,-24($23)
-  sw  $11,-28($23)
-  sw  $12,-32($23)
-  sw  $13,-36($23)
-  sw  $14,-40($23)
-  addiu  $23,$23,-44
-
-  move  $2,$4
+  move  $v0,$a0
   syscall
   nop
   beq $7,$0,.LDone
@@ -133,20 +93,6 @@ asm
 .LFailed:
   li    $2,-1
 .LDone:
-
-  addiu  $23,$23,44
-  lw  $4,0($23)
-  lw  $5,-4($23)
-  lw  $6,-8($23)
-  lw  $7,-12($23)
-  lw  $8,-16($23)
-  lw  $9,-20($23)
-  lw  $10,-24($23)
-  lw  $11,-28($23)
-  lw  $12,-32($23)
-  lw  $13,-36($23)
-  lw  $14,-40($23)
-
 end;
 
 
@@ -158,22 +104,8 @@ function FpSysCall(sysnr,param1:TSysParam):TSysResult; assembler;[public,alias:'
 var
   temp: longint;
 asm
-  sw  $4,0($23)
-  sw  $5,-4($23)
-  sw  $6,-8($23)
-  sw  $7,-12($23)
-  sw  $8,-16($23)
-  sw  $9,-20($23)
-  sw  $10,-24($23)
-  sw  $11,-28($23)
-  sw  $12,-32($23)
-  sw  $13,-36($23)
-  sw  $14,-40($23)
-  addiu  $23,$23,-44
-
-
-  move  $2,$4
-  move  $4,$5
+  move  $v0,$a0
+  move  $a0,$a1
   syscall
   nop
   beq $7,$0,.LDone
@@ -199,20 +131,6 @@ asm
 .LFailed:
   li    $2,-1
 .LDone:
-
-  addiu  $23,$23,44
-  lw  $4,0($23)
-  lw  $5,-4($23)
-  lw  $6,-8($23)
-  lw  $7,-12($23)
-  lw  $8,-16($23)
-  lw  $9,-20($23)
-  lw  $10,-24($23)
-  lw  $11,-28($23)
-  lw  $12,-32($23)
-  lw  $13,-36($23)
-  lw  $14,-40($23)
-
 end;
 
 
@@ -224,23 +142,9 @@ function FpSysCall(sysnr,param1,param2:TSysParam):TSysResult; assembler;[public,
 var
   temp: longint;
 asm
-  sw  $4,0($23)
-  sw  $5,-4($23)
-  sw  $6,-8($23)
-  sw  $7,-12($23)
-  sw  $8,-16($23)
-  sw  $9,-20($23)
-  sw  $10,-24($23)
-  sw  $11,-28($23)
-  sw  $12,-32($23)
-  sw  $13,-36($23)
-  sw  $14,-40($23)
-  addiu  $23,$23,-44
-
-
-  move  $2,$4
-  move  $4,$5
-  move  $5,$6
+  move  $v0,$a0
+  move  $a0,$a1
+  move  $a1,$a2
   syscall
   nop
   beq $7,$0,.LDone
@@ -266,20 +170,6 @@ asm
 .LFailed:
   li    $2,-1
 .LDone:
-
-  addiu  $23,$23,44
-  lw  $4,0($23)
-  lw  $5,-4($23)
-  lw  $6,-8($23)
-  lw  $7,-12($23)
-  lw  $8,-16($23)
-  lw  $9,-20($23)
-  lw  $10,-24($23)
-  lw  $11,-28($23)
-  lw  $12,-32($23)
-  lw  $13,-36($23)
-  lw  $14,-40($23)
-
 end;
 
 
@@ -291,24 +181,10 @@ function FpSysCall(sysnr,param1,param2,param3:TSysParam):TSysResult; assembler;[
 var
   temp: longint;
 asm
-  sw  $4,0($23)
-  sw  $5,-4($23)
-  sw  $6,-8($23)
-  sw  $7,-12($23)
-  sw  $8,-16($23)
-  sw  $9,-20($23)
-  sw  $10,-24($23)
-  sw  $11,-28($23)
-  sw  $12,-32($23)
-  sw  $13,-36($23)
-  sw  $14,-40($23)
-  addiu  $23,$23,-44
-
-
-  move  $2,$4
-  move  $4,$5
-  move  $5,$6
-  move  $6,$7
+  move  $v0,$a0
+  move  $a0,$a1
+  move  $a1,$a2
+  move  $a2,$a3
   syscall
   nop
   beq $7,$0,.LDone
@@ -334,20 +210,6 @@ asm
 .LFailed:
   li    $2,-1
 .LDone:
-
-  addiu  $23,$23,44
-  lw  $4,0($23)
-  lw  $5,-4($23)
-  lw  $6,-8($23)
-  lw  $7,-12($23)
-  lw  $8,-16($23)
-  lw  $9,-20($23)
-  lw  $10,-24($23)
-  lw  $11,-28($23)
-  lw  $12,-32($23)
-  lw  $13,-36($23)
-  lw  $14,-40($23)
-
 end;
 
 
@@ -359,25 +221,11 @@ function FpSysCall(sysnr,param1,param2,param3,param4:TSysParam):TSysResult; asse
 var
   temp: longint;
 asm
-  sw  $4,0($23)
-  sw  $5,-4($23)
-  sw  $6,-8($23)
-  sw  $7,-12($23)
-  sw  $8,-16($23)
-  sw  $9,-20($23)
-  sw  $10,-24($23)
-  sw  $11,-28($23)
-  sw  $12,-32($23)
-  sw  $13,-36($23)
-  sw  $14,-40($23)
-  addiu  $23,$23,-44
-
-
-  move  $2,$4
-  move  $4,$5
-  move  $5,$6
-  move  $6,$7
-  move  $7,$8
+  move  $v0,$a0
+  move  $a0,$a1
+  move  $a1,$a2
+  move  $a2,$a3
+  lw    $a3,16($sp)
   syscall
   nop
   beq $7,$0,.LDone
@@ -403,20 +251,6 @@ asm
 .LFailed:
   li    $2,-1
 .LDone:
-
-  addiu  $23,$23,44
-  lw  $4,0($23)
-  lw  $5,-4($23)
-  lw  $6,-8($23)
-  lw  $7,-12($23)
-  lw  $8,-16($23)
-  lw  $9,-20($23)
-  lw  $10,-24($23)
-  lw  $11,-28($23)
-  lw  $12,-32($23)
-  lw  $13,-36($23)
-  lw  $14,-40($23)
-
 end;
 
 

+ 11 - 5
rtl/linux/signal.inc

@@ -20,17 +20,23 @@
 
 Const
   { For sending a signal }
-{$ifdef SPARC}
+{$ifdef CPUSPARC}
   SA_SIGINFO   = $200;
   SA_NOMASK    = $20;
 
   SIG_BLOCK   = 1;
   SIG_UNBLOCK = 2;
   SIG_SETMASK = 4;
-{$else SPARC}
+{$else CPUSPARC}
+{$ifdef CPUMIPS}
+  SA_NOCLDSTOP = 1;
+  SA_NOCLDWAIT = $10000;
+  SA_SIGINFO   = 8;
+{$else CPUMIPS}
   SA_NOCLDSTOP = 1;
   SA_NOCLDWAIT = 2;
   SA_SIGINFO   = 4;
+{$endif CPUMIPS}
   SA_RESTORER  = $04000000;
   SA_ONSTACK   = $08000000;
   SA_RESTART   = $10000000;
@@ -44,7 +50,7 @@ Const
   SIG_BLOCK   = 0;
   SIG_UNBLOCK = 1;
   SIG_SETMASK = 2;
-{$endif SPARC}
+{$endif CPUSPARC}
 
   SIG_DFL = 0 ;
   SIG_IGN = 1 ;
@@ -186,14 +192,14 @@ type
   signalhandler_t = procedure(signal: longint); cdecl;
   sigactionhandler_t = procedure(signal: longint; info: psiginfo; context: psigcontext); cdecl;
   sigrestorerhandler_t = procedure; cdecl;
-      
+
   signalhandler = signalhandler_t;
   sigactionhandler = sigactionhandler_t;
   sigrestorerhandler = sigrestorerhandler_t;
   tsignalhandler = signalhandler_t;
   tsigactionhandler = sigactionhandler_t;
   tsigrestorerhandler = sigrestorerhandler_t;
-  
+
   psigactionrec = ^sigactionrec;
 
 {$ifdef FPC_USE_LIBC}  // libc order is different ?