mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-11 15:47:51 +02:00
* Patch from Fuxin Zhang
git-svn-id: trunk@21527 -
This commit is contained in:
parent
8259e69539
commit
a7c9e4768e
@ -225,7 +225,8 @@ asm
|
|||||||
move $a0,$a1
|
move $a0,$a1
|
||||||
move $a1,$a2
|
move $a1,$a2
|
||||||
move $a2,$a3
|
move $a2,$a3
|
||||||
lw $a3,16($sp)
|
//lw $a3,16($sp)
|
||||||
|
move $a3,$8 //register passing is wrong, hack for now
|
||||||
syscall
|
syscall
|
||||||
nop
|
nop
|
||||||
beq $7,$0,.LDone
|
beq $7,$0,.LDone
|
||||||
@ -262,33 +263,16 @@ function FpSysCall(sysnr,param1,param2,param3,param4,param5:TSysParam):TSysResul
|
|||||||
var
|
var
|
||||||
temp: longint;
|
temp: longint;
|
||||||
asm
|
asm
|
||||||
sw $4,0($23)
|
move $v0,$a0
|
||||||
sw $5,-4($23)
|
move $a0,$a1
|
||||||
sw $6,-8($23)
|
move $a1,$a2
|
||||||
sw $7,-12($23)
|
move $a2,$a3
|
||||||
sw $8,-16($23)
|
move $a3, $8
|
||||||
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
|
|
||||||
|
|
||||||
|
sw $9, 16($sp)
|
||||||
move $2,$4
|
|
||||||
move $4,$5
|
|
||||||
move $5,$6
|
|
||||||
move $6,$7
|
|
||||||
move $7,$8
|
|
||||||
move $8,$9
|
|
||||||
subu $29,32
|
|
||||||
sw $9, 16($29)
|
|
||||||
|
|
||||||
syscall
|
syscall
|
||||||
nop
|
nop
|
||||||
addiu $29,32
|
|
||||||
|
|
||||||
beq $7,$0,.LDone
|
beq $7,$0,.LDone
|
||||||
nop
|
nop
|
||||||
lui $8,%hi(fpc_threadvar_relocate_proc)
|
lui $8,%hi(fpc_threadvar_relocate_proc)
|
||||||
@ -313,19 +297,6 @@ asm
|
|||||||
li $2,-1
|
li $2,-1
|
||||||
.LDone:
|
.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;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -337,36 +308,19 @@ function FpSysCall(sysnr,param1,param2,param3,param4,param5,param6:TSysParam):TS
|
|||||||
var
|
var
|
||||||
temp: longint;
|
temp: longint;
|
||||||
asm
|
asm
|
||||||
sw $4,0($23)
|
{ All params are already stored on stack at that point }
|
||||||
sw $5,-4($23)
|
lw $v0,sysnr
|
||||||
sw $6,-8($23)
|
lw $a0,param1
|
||||||
sw $7,-12($23)
|
lw $a1,param2
|
||||||
sw $8,-16($23)
|
lw $a2,param3
|
||||||
sw $9,-20($23)
|
lw $a3,param4
|
||||||
sw $10,-24($23)
|
|
||||||
sw $11,-28($23)
|
|
||||||
sw $12,-32($23)
|
|
||||||
sw $13,-36($23)
|
|
||||||
sw $14,-40($23)
|
|
||||||
addiu $23,$23,-44
|
|
||||||
|
|
||||||
|
lw $at,param5
|
||||||
move $2,$4
|
sw $at,16($sp)
|
||||||
move $4,$5
|
lw $at,param6
|
||||||
move $5,$6
|
sw $at,20($sp)
|
||||||
move $6,$7
|
|
||||||
move $7,$8
|
|
||||||
move $8,$9
|
|
||||||
lw $9,0($fp)
|
|
||||||
|
|
||||||
subu $29,32
|
|
||||||
sw $8, 16($29)
|
|
||||||
sw $9, 20($29)
|
|
||||||
syscall
|
syscall
|
||||||
nop
|
nop
|
||||||
addiu $29,32
|
|
||||||
|
|
||||||
|
|
||||||
beq $7,$0,.LDone
|
beq $7,$0,.LDone
|
||||||
nop
|
nop
|
||||||
lui $8,%hi(fpc_threadvar_relocate_proc)
|
lui $8,%hi(fpc_threadvar_relocate_proc)
|
||||||
@ -390,18 +344,4 @@ asm
|
|||||||
.LFailed:
|
.LFailed:
|
||||||
li $2,-1
|
li $2,-1
|
||||||
.LDone:
|
.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;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user