From: Peter Molnar Date: Wed, 12 Sep 2007 12:33:15 +0000 (+0000) Subject: * src/vm/jit/s390/codegen.c (codegen_emit_stub_native): Changed some N_MOV to M_MOV. X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=3345a7b48e053a1f535b268577292e0d523c8958;p=cacao.git * src/vm/jit/s390/codegen.c (codegen_emit_stub_native): Changed some N_MOV to M_MOV. * 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. --- diff --git a/src/vm/jit/s390/asmpart.S b/src/vm/jit/s390/asmpart.S index b711f0c27..a19454c55 100644 --- a/src/vm/jit/s390/asmpart.S +++ b/src/vm/jit/s390/asmpart.S @@ -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 */ diff --git a/src/vm/jit/s390/codegen.c b/src/vm/jit/s390/codegen.c index f0d583221..fb101a1d3 100644 --- a/src/vm/jit/s390/codegen.c +++ b/src/vm/jit/s390/codegen.c @@ -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); diff --git a/src/vm/jit/s390/md-abi.c b/src/vm/jit/s390/md-abi.c index 916ba099b..0b3ff13ce 100644 --- a/src/vm/jit/s390/md-abi.c +++ b/src/vm/jit/s390/md-abi.c @@ -30,16 +30,16 @@ */ - #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 /* 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[] = { diff --git a/src/vm/jit/s390/md-abi.h b/src/vm/jit/s390/md-abi.h index ca1e89f80..83736f598 100644 --- a/src/vm/jit/s390/md-abi.h +++ b/src/vm/jit/s390/md-abi.h @@ -125,10 +125,10 @@ #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 diff --git a/src/vm/jit/s390/md-asm.h b/src/vm/jit/s390/md-asm.h index ea09fe7c6..d41cc74c7 100644 --- a/src/vm/jit/s390/md-asm.h +++ b/src/vm/jit/s390/md-asm.h @@ -62,6 +62,8 @@ #define fa0 %f0 #define fa1 %f2 +#define ftmp1 %r4 +#define ftmp2 %r6 /* save and restore macros ****************************************************/