* src/vm/jit/s390/codegen.c (codegen_emit_stub_native): Changed some N_MOV to M_MOV.
authorPeter Molnar <pm@complang.tuwien.ac.at>
Wed, 12 Sep 2007 12:33:15 +0000 (12:33 +0000)
committerPeter Molnar <pm@complang.tuwien.ac.at>
Wed, 12 Sep 2007 12:33:15 +0000 (12:33 +0000)
* src/vm/jit/s390/asmpart.S, src/vm/jit/s390/md-asm.h, src/vm/jit/s390/md-abi.h, src/vm/jit/s390/md-abi.c: Reverted [7237:9a2ce00b716e] where f4 and f6 were made callee saved.

src/vm/jit/s390/asmpart.S
src/vm/jit/s390/codegen.c
src/vm/jit/s390/md-abi.c
src/vm/jit/s390/md-abi.h
src/vm/jit/s390/md-asm.h

index b711f0c27637f3cbc21714cdfcc1a195c64ab1ca..a19454c55a33fdd138e9186d489e6633f066f749 100644 (file)
@@ -142,7 +142,9 @@ asm_vm_call_method_double:
        st    mptr, 3*4(sp)         /* mptr/itmp2 is callee saved in terms of C abi */
        st    pv, 4*4(sp)
        st    a4, 5*4(sp)           /* a4 is callee saved in terms of C abi */
-       st    ra, 6*4(sp)
+       std   ftmp1, 6*4(sp)        /* ftmp1 and ftmp2 are callees saved in terms of C abi */
+       std   ftmp2, 8*4(sp)
+       st    ra, 10*4(sp)
 
        lr    s0, a1                /* data structure */
        lr    %r0, a2               /* number of stack arguments */
@@ -187,7 +189,9 @@ L_asm_vm_call_method_return:
        l     mptr, 3*4(sp)
        l     pv, 4*4(sp)
        l     a4, 5*4(sp)
-       l     ra, 6*4(sp)
+       ld    ftmp1, 6*4(sp)
+       ld    ftmp2, 8*4(sp)
+       l     ra, 10*4(sp)
 
        ahi   sp, 8*4               /* remove stackframe */
        br    ra                    /* return */
index f0d58322159b637f24048b5d72128bc2819a04f7..fb101a1d346b04bfe745105c6e4ec50c915f9e14 100644 (file)
@@ -3610,7 +3610,7 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f)
 
        /* create dynamic stack info */
 
-       N_MOV(REG_SP, REG_A0); /* currentsp */
+       M_MOV(REG_SP, REG_A0); /* currentsp */
        N_LA(REG_A1, -N_PV_OFFSET, RN, REG_PV); /* pv */
 
        disp = dseg_add_functionptr(cd, codegen_start_native_call);
@@ -3767,7 +3767,7 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f)
 
        /* remove native stackframe info */
 
-       N_MOV(REG_SP, REG_A0); /* currentsp */
+       M_MOV(REG_SP, REG_A0); /* currentsp */
        N_LA(REG_A1, -N_PV_OFFSET, RN, REG_PV); /* pv */
        disp = dseg_add_functionptr(cd, codegen_finish_native_call);
        M_ALD_DSEG(REG_ITMP1, disp);
index 916ba099b9222edeeeac841f78af74445926deea..0b3ff13ce44180efaa456f58e638c364f6da1789 100644 (file)
 
 */
 
-
 #include "config.h"
-#include "vm/types.h"
 
+#include "vm/global.h"
+#include "vm/jit/jit.h"
 #include "vm/jit/s390/md-abi.h"
+#include "vm/types.h"
 
 #include "vmcore/descriptor.h"
-#include "vm/global.h"
-#include "vm/jit/jit.h"
 
+#include <assert.h>
 
 /* register descripton array **************************************************/
 
@@ -79,7 +79,7 @@ const s4 abi_registers_integer_temporary[] = {
 };
 
 s4 nregdescfloat[] = {
-       REG_ARG, REG_TMP, REG_ARG, REG_TMP, REG_SAV, REG_TMP, REG_SAV, REG_TMP,
+       REG_ARG, REG_TMP, REG_ARG, REG_TMP, REG_RES, REG_TMP, REG_RES, REG_TMP,
        REG_TMP, REG_TMP, REG_TMP, REG_TMP, REG_TMP, REG_TMP, REG_TMP, REG_TMP,
     REG_END
 };
@@ -90,8 +90,7 @@ const s4 abi_registers_float_argument[] = {
 };
 
 const s4 abi_registers_float_saved[] = {
-       4, /* f4 */
-       6  /* f6 */
+       -1 /* none */
 };
 
 const s4 abi_registers_float_temporary[] = {
index ca1e89f80d0aae9a3fade9428c7b46088aeb2e79..83736f598f8d4873d280c4cecce3a88d7139950f 100644 (file)
 #define INT_RES_CNT     5        /* number of integer reserved registers      */
 
 #define FLT_REG_CNT     16       /* number of float registers                 */
-#define FLT_SAV_CNT     2        /* number of float callee saved registers    */
+#define FLT_SAV_CNT     0        /* number of float callee saved registers    */
 #define FLT_ARG_CNT     2        /* number of float argument registers        */
 #define FLT_TMP_CNT     12       /* number of float temporary registers       */
-#define FLT_RES_CNT     0        /* number of float reserved registers        */
+#define FLT_RES_CNT     2        /* number of float reserved registers        */
 
 #define TRACE_ARGS_NUM  8
 
index ea09fe7c68adeb607388f7d767ca69c91e7a9052..d41cc74c746142acd545ea4f2ddc640771030c49 100644 (file)
@@ -62,6 +62,8 @@
 
 #define fa0 %f0
 #define fa1 %f2
+#define ftmp1 %r4
+#define ftmp2 %r6
 
 /* save and restore macros ****************************************************/