From 16e79969aa211a401d8071370ddb29a75e51ec14 Mon Sep 17 00:00:00 2001 From: florian Date: Sun, 12 Feb 2012 18:20:43 +0000 Subject: [PATCH] * started to fix simple mips syscalls * corrected SA_* values git-svn-id: trunk@20326 - --- rtl/linux/mips/syscall.inc | 196 +++---------------------------------- rtl/linux/signal.inc | 16 ++- 2 files changed, 26 insertions(+), 186 deletions(-) diff --git a/rtl/linux/mips/syscall.inc b/rtl/linux/mips/syscall.inc index 84e7e8582c..396a56a95a 100644 --- a/rtl/linux/mips/syscall.inc +++ b/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; diff --git a/rtl/linux/signal.inc b/rtl/linux/signal.inc index a6dcf59494..a2426e82ac 100644 --- a/rtl/linux/signal.inc +++ b/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 ?