|
@@ -225,7 +225,8 @@ asm
|
|
|
move $a0,$a1
|
|
|
move $a1,$a2
|
|
|
move $a2,$a3
|
|
|
- lw $a3,16($sp)
|
|
|
+ //lw $a3,16($sp)
|
|
|
+ move $a3,$8 //register passing is wrong, hack for now
|
|
|
syscall
|
|
|
nop
|
|
|
beq $7,$0,.LDone
|
|
@@ -262,33 +263,16 @@ function FpSysCall(sysnr,param1,param2,param3,param4,param5:TSysParam):TSysResul
|
|
|
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 $v0,$a0
|
|
|
+ move $a0,$a1
|
|
|
+ move $a1,$a2
|
|
|
+ move $a2,$a3
|
|
|
+ move $a3, $8
|
|
|
|
|
|
- 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)
|
|
|
+ sw $9, 16($sp)
|
|
|
|
|
|
syscall
|
|
|
nop
|
|
|
- addiu $29,32
|
|
|
-
|
|
|
beq $7,$0,.LDone
|
|
|
nop
|
|
|
lui $8,%hi(fpc_threadvar_relocate_proc)
|
|
@@ -313,19 +297,6 @@ asm
|
|
|
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;
|
|
|
|
|
|
|
|
@@ -337,36 +308,19 @@ function FpSysCall(sysnr,param1,param2,param3,param4,param5,param6:TSysParam):TS
|
|
|
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 $8,$9
|
|
|
- lw $9,0($fp)
|
|
|
-
|
|
|
- subu $29,32
|
|
|
- sw $8, 16($29)
|
|
|
- sw $9, 20($29)
|
|
|
+{ All params are already stored on stack at that point }
|
|
|
+ lw $v0,sysnr
|
|
|
+ lw $a0,param1
|
|
|
+ lw $a1,param2
|
|
|
+ lw $a2,param3
|
|
|
+ lw $a3,param4
|
|
|
+
|
|
|
+ lw $at,param5
|
|
|
+ sw $at,16($sp)
|
|
|
+ lw $at,param6
|
|
|
+ sw $at,20($sp)
|
|
|
syscall
|
|
|
nop
|
|
|
- addiu $29,32
|
|
|
-
|
|
|
-
|
|
|
beq $7,$0,.LDone
|
|
|
nop
|
|
|
lui $8,%hi(fpc_threadvar_relocate_proc)
|
|
@@ -390,18 +344,4 @@ 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;
|