From 278fbb742e1acbc4eabdc84d08cb570a60bf2947 Mon Sep 17 00:00:00 2001 From: sergei Date: Fri, 21 Dec 2012 04:42:41 +0000 Subject: [PATCH] * mips-linux: call SetErrno in order to remove dependence on threadvar implementation details. git-svn-id: trunk@23197 - --- rtl/linux/mips/syscall.inc | 176 ++++--------------------------------- 1 file changed, 16 insertions(+), 160 deletions(-) diff --git a/rtl/linux/mips/syscall.inc b/rtl/linux/mips/syscall.inc index bc8c1bacce..e850f8faf1 100644 --- a/rtl/linux/mips/syscall.inc +++ b/rtl/linux/mips/syscall.inc @@ -23,33 +23,15 @@ linux flavours } function Fpfork : pid_t; [public, alias : 'FPC_SYSC_FORK'];assembler; -var - temp: longint; asm li $2,4002 syscall nop beq $7,$0,.LDone nop - lui $8,%hi(fpc_threadvar_relocate_proc) - addiu $8,%lo(fpc_threadvar_relocate_proc) - lw $8,0($8) - bne $8,$0,.LThreaded + move $a0,$2 + jal SetErrno nop - lui $4,%hi(Errno+4) - addiu $4,%lo(Errno+4) - sw $2,0($4) - b .LFailed - nop -.LThreaded: - sw $2,temp - lui $4,%hi(errno) - addiu $4,$4,%lo(errno) - jalr $8 - nop - lw $8,temp - sw $8,0($2) -.LFailed: li $2,-1 .LDone: end; @@ -64,33 +46,15 @@ function FpSysCall(sysnr:TSysParam):TSysResult; assembler;[public,alias:'FPC_SYS This function puts the registers in place, does the call, and then copies back the registers as they are after the SysCall. } -var - temp: longint; asm move $v0,$a0 syscall nop beq $7,$0,.LDone nop - lui $8,%hi(fpc_threadvar_relocate_proc) - addiu $8,%lo(fpc_threadvar_relocate_proc) - lw $8,0($8) - bne $8,$0,.LThreaded + move $a0,$2 + jal SetErrno nop - lui $4,%hi(Errno+4) - addiu $4,%lo(Errno+4) - sw $2,0($4) - b .LFailed - nop -.LThreaded: - sw $2,temp - lui $4,%hi(errno) - addiu $4,$4,%lo(errno) - jalr $8 - nop - lw $8,temp - sw $8,0($2) -.LFailed: li $2,-1 .LDone: end; @@ -101,8 +65,6 @@ function FpSysCall(sysnr,param1:TSysParam):TSysResult; assembler;[public,alias:' This function puts the registers in place, does the call, and then copies back the registers as they are after the SysCall. } -var - temp: longint; asm move $v0,$a0 move $a0,$a1 @@ -110,25 +72,9 @@ asm nop beq $7,$0,.LDone nop - lui $8,%hi(fpc_threadvar_relocate_proc) - addiu $8,%lo(fpc_threadvar_relocate_proc) - lw $8,0($8) - bne $8,$0,.LThreaded + move $a0,$2 + jal SetErrno nop - lui $4,%hi(Errno+4) - addiu $4,%lo(Errno+4) - sw $2,0($4) - b .LFailed - nop -.LThreaded: - sw $2,temp - lui $4,%hi(errno) - addiu $4,$4,%lo(errno) - jalr $8 - nop - lw $8,temp - sw $8,0($2) -.LFailed: li $2,-1 .LDone: end; @@ -139,8 +85,6 @@ function FpSysCall(sysnr,param1,param2:TSysParam):TSysResult; assembler;[public, This function puts the registers in place, does the call, and then copies back the registers as they are after the SysCall. } -var - temp: longint; asm move $v0,$a0 move $a0,$a1 @@ -149,25 +93,9 @@ asm nop beq $7,$0,.LDone nop - lui $8,%hi(fpc_threadvar_relocate_proc) - addiu $8,%lo(fpc_threadvar_relocate_proc) - lw $8,0($8) - bne $8,$0,.LThreaded + move $a0,$2 + jal SetErrno nop - lui $4,%hi(Errno+4) - addiu $4,%lo(Errno+4) - sw $2,0($4) - b .LFailed - nop -.LThreaded: - sw $2,temp - lui $4,%hi(errno) - addiu $4,$4,%lo(errno) - jalr $8 - nop - lw $8,temp - sw $8,0($2) -.LFailed: li $2,-1 .LDone: end; @@ -178,8 +106,6 @@ function FpSysCall(sysnr,param1,param2,param3:TSysParam):TSysResult; assembler;[ This function puts the registers in place, does the call, and then copies back the registers as they are after the SysCall. } -var - temp: longint; asm move $v0,$a0 move $a0,$a1 @@ -189,25 +115,9 @@ asm nop beq $7,$0,.LDone nop - lui $8,%hi(fpc_threadvar_relocate_proc) - addiu $8,%lo(fpc_threadvar_relocate_proc) - lw $8,0($8) - bne $8,$0,.LThreaded + move $a0,$2 + jal SetErrno nop - lui $4,%hi(Errno+4) - addiu $4,%lo(Errno+4) - sw $2,0($4) - b .LFailed - nop -.LThreaded: - sw $2,temp - lui $4,%hi(errno) - addiu $4,$4,%lo(errno) - jalr $8 - nop - lw $8,temp - sw $8,0($2) -.LFailed: li $2,-1 .LDone: end; @@ -218,8 +128,6 @@ function FpSysCall(sysnr,param1,param2,param3,param4:TSysParam):TSysResult; asse This function puts the registers in place, does the call, and then copies back the registers as they are after the SysCall. } -var - temp: longint; asm move $v0,$a0 move $a0,$a1 @@ -230,25 +138,9 @@ asm nop beq $7,$0,.LDone nop - lui $8,%hi(fpc_threadvar_relocate_proc) - addiu $8,%lo(fpc_threadvar_relocate_proc) - lw $8,0($8) - bne $8,$0,.LThreaded + move $a0,$2 + jal SetErrno nop - lui $4,%hi(Errno+4) - addiu $4,%lo(Errno+4) - sw $2,0($4) - b .LFailed - nop -.LThreaded: - sw $2,temp - lui $4,%hi(errno) - addiu $4,$4,%lo(errno) - jalr $8 - nop - lw $8,temp - sw $8,0($2) -.LFailed: li $2,-1 .LDone: end; @@ -259,8 +151,6 @@ function FpSysCall(sysnr,param1,param2,param3,param4,param5:TSysParam):TSysResul This function puts the registers in place, does the call, and then copies back the registers as they are after the SysCall. } -var - temp: longint; asm move $v0,$a0 move $a0,$a1 @@ -274,25 +164,9 @@ asm nop beq $7,$0,.LDone nop - lui $8,%hi(fpc_threadvar_relocate_proc) - addiu $8,%lo(fpc_threadvar_relocate_proc) - lw $8,0($8) - bne $8,$0,.LThreaded + move $a0,$2 + jal SetErrno nop - lui $4,%hi(Errno+4) - addiu $4,%lo(Errno+4) - sw $2,0($4) - b .LFailed - nop -.LThreaded: - sw $2,temp - lui $4,%hi(errno) - addiu $4,$4,%lo(errno) - jalr $8 - nop - lw $8,temp - sw $8,0($2) -.LFailed: li $2,-1 .LDone: @@ -304,8 +178,6 @@ function FpSysCall(sysnr,param1,param2,param3,param4,param5,param6:TSysParam):TS This function puts the registers in place, does the call, and then copies back the registers as they are after the SysCall. } -var - temp: longint; asm move $v0,$a0 move $a0,$a1 @@ -320,25 +192,9 @@ asm nop beq $7,$0,.LDone nop - lui $8,%hi(fpc_threadvar_relocate_proc) - addiu $8,%lo(fpc_threadvar_relocate_proc) - lw $8,0($8) - bne $8,$0,.LThreaded + move $a0,$2 + jal SetErrno nop - lui $4,%hi(Errno+4) - addiu $4,%lo(Errno+4) - sw $2,0($4) - b .LFailed - nop -.LThreaded: - sw $2,temp - lui $4,%hi(errno) - addiu $4,$4,%lo(errno) - jalr $8 - nop - lw $8,temp - sw $8,0($2) -.LFailed: li $2,-1 .LDone: end;