Quellcode durchsuchen

* Patch from Fuxin Zhang

git-svn-id: trunk@21527 -
pierre vor 13 Jahren
Ursprung
Commit
a7c9e4768e
1 geänderte Dateien mit 19 neuen und 79 gelöschten Zeilen
  1. 19 79
      rtl/linux/mips/syscall.inc

+ 19 - 79
rtl/linux/mips/syscall.inc

@@ -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;