Browse Source

* fixed parameter passing for int64

florian 22 years ago
parent
commit
d992e13e08
1 changed files with 30 additions and 27 deletions
  1. 30 27
      rtl/powerpc/math.inc

+ 30 - 27
rtl/powerpc/math.inc

@@ -355,30 +355,30 @@ var
 asm
 asm
            lis    r0,0x4330
            lis    r0,0x4330
            stw    r0,temp
            stw    r0,temp
-           xoris  r4,r4,0x8000
-           stw    r4,4+temp
+           xoris  r3,r3,0x8000
+           stw    r3,4+temp
            {$ifndef macos}
            {$ifndef macos}
-           lis    r4,longint_to_real_helper@ha
-           lfd    f1,longint_to_real_helper@l(r4)
+           lis    r3,longint_to_real_helper@ha
+           lfd    f1,longint_to_real_helper@l(r3)
            {$else}
            {$else}
-           lwz    r4,longint_to_real_helper[TC](r2)
-           lfd    f1,0(r4)
+           lwz    r3,longint_to_real_helper[TC](r2)
+           lfd    f1,0(r3)
            {$endif}
            {$endif}
            lfd    f0,temp
            lfd    f0,temp
-           stw    r3,4+temp
+           stw    r4,4+temp
            fsub   f0,f0,f1
            fsub   f0,f0,f1
            {$ifndef macos}
            {$ifndef macos}
-           lis    r3,cardinal_to_real_helper@ha
-           lfd    f1,cardinal_to_real_helper@l(r3)
-           lis    r3,int_to_real_factor@ha
+           lis    r4,cardinal_to_real_helper@ha
+           lfd    f1,cardinal_to_real_helper@l(r4)
+           lis    r4,int_to_real_factor@ha
            lfd    f3,temp
            lfd    f3,temp
-           lfd    f2,int_to_real_factor@l(r3)
+           lfd    f2,int_to_real_factor@l(r4)
            {$else}
            {$else}
-           lwz    r3,cardinal_to_real_helper[TC](r2)
-           lwz    r4,int_to_real_factor[TC](r2)
+           lwz    r4,cardinal_to_real_helper[TC](r2)
+           lwz    r3,int_to_real_factor[TC](r2)
            lfd    f3,temp
            lfd    f3,temp
-           lfd    f1,0(r3)
-           lfd    f2,0(r4)
+           lfd    f1,0(r4)
+           lfd    f2,0(r3)
            {$endif}
            {$endif}
            fsub   f3,f3,f1
            fsub   f3,f3,f1
            fmadd  f1,f0,f2,f3
            fmadd  f1,f0,f2,f3
@@ -398,33 +398,36 @@ var
 asm
 asm
            lis    r0,0x4330
            lis    r0,0x4330
            stw    r0,temp
            stw    r0,temp
-           stw    r4,4+temp
+           stw    r3,4+temp
            lfd    f0,temp
            lfd    f0,temp
            {$ifndef macos}
            {$ifndef macos}
-           lis    r4,cardinal_to_real_helper@ha
-           lfd    f1,cardinal_to_real_helper@l(r4)
+           lis    r3,cardinal_to_real_helper@ha
+           lfd    f1,cardinal_to_real_helper@l(r3)
            {$else}
            {$else}
-           lwz    r4,longint_to_real_helper[TC](r2)
-           lfd    f1,0(r4)
+           lwz    r3,longint_to_real_helper[TC](r2)
+           lfd    f1,0(r3)
            {$endif}
            {$endif}
-           stw    r3,4+temp
+           stw    r4,4+temp
            fsub   f0,f0,f1
            fsub   f0,f0,f1
            lfd    f3,temp
            lfd    f3,temp
            {$ifndef macos}
            {$ifndef macos}
-           lis    r3,int_to_real_factor@ha
-           lfd    f2,int_to_real_factor@l(r3)
+           lis    r4,int_to_real_factor@ha
+           lfd    f2,int_to_real_factor@l(r4)
            {$else}
            {$else}
-           lwz    r3,int_to_real_factor[TC](r2)
-           lfd    f2,0(r3)
+           lwz    r4,int_to_real_factor[TC](r2)
+           lfd    f2,0(r4)
            {$endif}
            {$endif}
            fsub   f3,f3,f1
            fsub   f3,f3,f1
            fmadd  f1,f0,f2,f3
            fmadd  f1,f0,f2,f3
-end ['R0','R3','F0','F1','F2','F3'];
+end ['R0','R3','R4','F0','F1','F2','F3'];
 
 
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.23  2003-05-24 13:39:32  jonas
+  Revision 1.24  2003-05-30 23:56:41  florian
+    * fixed parameter passing for int64
+
+  Revision 1.23  2003/05/24 13:39:32  jonas
     * fsqrt is an optional instruction in the ppc architecture and isn't
     * fsqrt is an optional instruction in the ppc architecture and isn't
       implemented by any current ppc afaik, so use the generic sqrt routine
       implemented by any current ppc afaik, so use the generic sqrt routine
       instead (adapted so it works with compilerproc)
       instead (adapted so it works with compilerproc)