* src/vm/jit/m68k/emit.c (emit_verbosecall_enter): Fixed for 8 byte stack slots.
authortbfg <none@none>
Fri, 22 Jun 2007 09:37:00 +0000 (09:37 +0000)
committertbfg <none@none>
Fri, 22 Jun 2007 09:37:00 +0000 (09:37 +0000)
* src/vm/jit/m68k/asmpart.S (asm_vm_call_method): Fixed location of method address.

src/vm/jit/m68k/asmpart.S
src/vm/jit/m68k/emit.c

index d52430d6d814c841a075fbb44286b15298e2964e..3fcecee8247c4ecfc9e26c6434da2abcac3c2b11 100644 (file)
@@ -92,8 +92,8 @@ asm_vm_call_method_double:
        movel   %sp@(12*4+6*8+2*4),%a2                          /* arg array */
        movel   %sp@(12*4+6*8+3*4),%d2                          /* arg count */
 
-       movel   %a3, %sp@(12*4+6*8)                                     /* copy method address to stackslot */
-       leal    %sp@(12*4+6*8), %a3                                     /* and store that address in %a3 */
+       movel   %a3, %sp@(11*4+6*8)                                     /* copy method address to stackslot */
+       leal    %sp@(11*4+6*8), %a3                                     /* and store that address in %a3 */
 #endif
 
        moveal  %sp, %a5                                        /* memorize stack */
index dc21b77e6f0d285be0c9661cd60d3684342fcd56..4a1576933799981df506a42effe5a1de3003956f 100644 (file)
@@ -540,8 +540,8 @@ void emit_verbosecall_enter(jitdata* jd)
                        
                        /* copy from original argument stack */
                        M_ILD(REG_ITMP1, REG_SP, disp);
-                       M_IPUSH(REG_ITMP1);
-                       M_ILD(REG_ITMP1, REG_SP, disp);
+                       M_ILD(REG_ITMP2, REG_SP, disp-4);
+                       M_IPUSH(REG_ITMP2);
                        M_IPUSH(REG_ITMP1);
                } else  {
                        /* function has no arg here, push nothing and adapt displacement */
@@ -591,7 +591,7 @@ void emit_verbosecall_exit(jitdata* jd)
 
 #if !defined(ENABLE_SOFTFLOAT)
        M_AADD_IMM(-8, REG_SP);
-       M_FSTORE(REG_F1, REG_SP, 0);
+       M_FSTORE(REG_D1, REG_SP, 0);
 #endif
 
        M_IPUSH_IMM(m);                                 /* push methodinfo */
@@ -623,7 +623,7 @@ void emit_verbosecall_exit(jitdata* jd)
        M_AADD_IMM(3*4 + 4, REG_SP);
 
 #if !defined(ENABLE_SOFTFLOAT)
-       M_FLOAD(REG_F1, REG_SP, 0)
+       M_FLOAD(REG_D1, REG_SP, 0)
        M_AADD_IMM(8, REG_SP);
 #endif