builtin_verbosecall_enter.
(builtin_trace_args): Renamed to builtin_verbosecall_enter.
(builtin_displaymethodstop): Renamed to builtin_verbosecall_exit and
changed signature.
* src/vm/builtin.h: Likewise.
* src/vm/jit/arm/emit.c (emit_verbosecall_enter): Likewise.
(builtin_verbosecall_exit): Likewise.
* src/vm/jit/alpha/emit.c: Likewise.
* src/vm/jit/i386/emit.c: Likewise.
* src/vm/jit/mips/emit.c: Likewise.
* src/vm/jit/powerpc/emit.c: Likewise.
* src/vm/jit/alpha/md-abi.h (REG_FA0, REG_FA1, REG_FA2): Added.
* src/vm/jit/mips/md-abi.h: Removed multiple defines.
* src/vm/jit/powerpc/linux/md-abi.h (REG_FA0, REG_FA1): Added.
(REG_A0_A1_PACKED): Likewise.
* src/vm/jit/mips/linux/Makefile.am (AM_CPPFLAGS): Added
-I$(top_builddir)/src.
* src/vm/jit/mips/irix/Makefile.am: Likewise.
calls instead of machine instructions, using the C calling
convention.
- $Id: builtin.c 7280 2007-02-03 19:34:10Z twisti $
+ $Id: builtin.c 7316 2007-02-10 19:06:54Z twisti $
*/
#endif /* !defined(NDEBUG) */
-/* builtin_trace_args **********************************************************
+/* builtin_verbosecall_enter ***************************************************
Print method call with arguments for -verbose:call.
#if !defined(NDEBUG)
#ifdef TRACE_ARGS_NUM
-void builtin_trace_args(s8 a0, s8 a1,
-#if TRACE_ARGS_NUM >= 4
- s8 a2, s8 a3,
-#endif /* TRACE_ARGS_NUM >= 4 */
-#if TRACE_ARGS_NUM >= 6
- s8 a4, s8 a5,
-#endif /* TRACE_ARGS_NUM >= 6 */
-#if TRACE_ARGS_NUM == 8
- s8 a6, s8 a7,
-#endif /* TRACE_ARGS_NUM == 8 */
- methodinfo *m)
+void builtin_verbosecall_enter(s8 a0, s8 a1,
+# if TRACE_ARGS_NUM >= 4
+ s8 a2, s8 a3,
+# endif
+# if TRACE_ARGS_NUM >= 6
+ s8 a4, s8 a5,
+# endif
+# if TRACE_ARGS_NUM == 8
+ s8 a6, s8 a7,
+# endif
+ methodinfo *m)
{
methoddesc *md;
char *logtext;
#endif /* !defined(NDEBUG) */
-/* builtin_displaymethodstop ***************************************************
+/* builtin_verbosecall_exit ****************************************************
Print method exit for -verbose:call.
*******************************************************************************/
#if !defined(NDEBUG)
-void builtin_displaymethodstop(methodinfo *m, s8 l, double d, float f)
+void builtin_verbosecall_exit(s8 l, double d, float f, methodinfo *m)
{
methoddesc *md;
char *logtext;
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: builtin.h 7246 2007-01-29 18:49:05Z twisti $
+ $Id: builtin.h 7316 2007-02-10 19:06:54Z twisti $
*/
#define BUILTIN_canstore (functionptr) builtin_canstore
#if defined(TRACE_ARGS_NUM)
-void builtin_trace_args(s8 a0, s8 a1,
-#if TRACE_ARGS_NUM >= 4
- s8 a2, s8 a3,
-#endif /* TRACE_ARGS_NUM >= 4 */
-#if TRACE_ARGS_NUM >= 6
- s8 a4, s8 a5,
-#endif /* TRACE_ARGS_NUM >= 6 */
-#if TRACE_ARGS_NUM == 8
- s8 a6, s8 a7,
-#endif /* TRACE_ARGS_NUM == 8 */
- methodinfo *m);
+void builtin_verbosecall_enter(s8 a0, s8 a1,
+# if TRACE_ARGS_NUM >= 4
+ s8 a2, s8 a3,
+# endif
+# if TRACE_ARGS_NUM >= 6
+ s8 a4, s8 a5,
+# endif
+# if TRACE_ARGS_NUM == 8
+ s8 a6, s8 a7,
+# endif
+ methodinfo *m);
/* NOT AN OP */
#endif /* defined(TRACE_ARGS_NUM) */
-void builtin_displaymethodstop(methodinfo *m, s8 l, double d, float f);
+void builtin_verbosecall_exit(s8 l, double d, float f, methodinfo *m);
/* NOT AN OP */
s4 builtin_idiv(s4 a, s4 b);
disp = dseg_add_address(cd, m);
M_ALD(REG_ITMP1, REG_PV, disp);
M_AST(REG_ITMP1, REG_SP, 0 * 8);
- disp = dseg_add_functionptr(cd, builtin_trace_args);
+ disp = dseg_add_functionptr(cd, builtin_verbosecall_enter);
M_ALD(REG_PV, REG_PV, disp);
M_JSR(REG_RA, REG_PV);
disp = (s4) (cd->mcodeptr - cd->mcodebase);
Generates the code for the call trace.
+ void builtin_verbosecall_exit(s8 l, double d, float f, methodinfo *m);
+
*******************************************************************************/
#if !defined(NDEBUG)
M_NOP;
- M_LDA(REG_SP, REG_SP, -4 * 8);
+ M_ASUB_IMM(REG_SP, 4 * 8, REG_SP);
M_AST(REG_RA, REG_SP, 0 * 8);
M_LST(REG_RESULT, REG_SP, 1 * 8);
M_DST(REG_FRESULT, REG_SP, 2 * 8);
- disp = dseg_add_address(cd, m);
- M_ALD(rd->argintregs[0], REG_PV, disp);
+ M_MOV(REG_RESULT, REG_A0);
+ M_FMOV(REG_FRESULT, REG_FA1);
+ M_FMOV(REG_FRESULT, REG_FA2);
- M_MOV(REG_RESULT, rd->argintregs[1]);
- M_FLTMOVE(REG_FRESULT, rd->argfltregs[2]);
- M_FLTMOVE(REG_FRESULT, rd->argfltregs[3]);
+ disp = dseg_add_address(cd, m);
+ M_ALD(REG_A3, REG_PV, disp);
- disp = dseg_add_functionptr(cd, builtin_displaymethodstop);
+ disp = dseg_add_functionptr(cd, builtin_verbosecall_exit);
M_ALD(REG_PV, REG_PV, disp);
M_JSR(REG_RA, REG_PV);
disp = (cd->mcodeptr - cd->mcodebase);
M_LLD(REG_RESULT, REG_SP, 1 * 8);
M_ALD(REG_RA, REG_SP, 0 * 8);
- M_LDA(REG_SP, REG_SP, 4 * 8);
+ M_AADD_IMM(REG_SP, 4 * 8, REG_SP);
/* mark trace code */
/* src/vm/jit/alpha/md-abi.h - defines for Alpha ABI
- Copyright (C) 1996-2005, 2006 R. Grafl, A. Krall, C. Kruegel,
+ Copyright (C) 1996-2005, 2006, 2007 R. Grafl, A. Krall, C. Kruegel,
C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring,
E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich,
J. Wenninger, Institut f. Computersprachen - TU Wien
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- Contact: cacao@cacaojvm.org
-
- Authors: Christian Thalinger
-
- Changes: Christian Ullrich
-
- $Id: md-abi.h 5387 2006-09-06 22:16:48Z twisti $
+ $Id: md-abi.h 7316 2007-02-10 19:06:54Z twisti $
*/
#define REG_RESULT 0 /* to deliver method results */
+#define REG_A0 16 /* define some argument registers */
+#define REG_A1 17
+#define REG_A2 18
+#define REG_A3 19
+
#define REG_RA 26 /* return address */
#define REG_PV 27 /* procedure vector, must be provided by caller */
#define REG_METHODPTR 28 /* pointer to the place from where the procedure */
#define REG_SP 30 /* stack pointer */
#define REG_ZERO 31 /* always zero */
-#define REG_A0 16 /* define some argument registers */
-#define REG_A1 17
-#define REG_A2 18
-#define REG_A3 19
/* floating point registers */
#define REG_FRESULT 0 /* to deliver floating point method results */
+#define REG_FA0 16 /* define some argument registers */
+#define REG_FA1 17
+#define REG_FA2 18
+
#define REG_FTMP1 28 /* temporary floating point register */
#define REG_FTMP2 29 /* temporary floating point register */
#define REG_FTMP3 30 /* temporary floating point register */
/* call tracer here (we use a long branch) */
- M_LONGBRANCH(builtin_trace_args);
+ M_LONGBRANCH(builtin_verbosecall_enter);
/* restore argument registers from stack */
Generates the code for the call trace.
+ void builtin_verbosecall_exit(s8 l, double d, float f, methodinfo *m);
+
*******************************************************************************/
#if !defined(NDEBUG)
M_NOP;
M_STMFD(BITMASK_RESULT | (1<<REG_LR) | (1<<REG_PV), REG_SP);
- M_SUB_IMM(REG_SP, REG_SP, (1 + 1) * 4); /* space for d[high reg] and f */
+ M_SUB_IMM(REG_SP, REG_SP, (1 + 1) * 4); /* space for f and m */
switch (md->returntype.type) {
case TYPE_ADR:
case TYPE_INT:
- M_INTMOVE(REG_RESULT, GET_LOW_REG(REG_A1_A2_PACKED));
- M_MOV_IMM(GET_HIGH_REG(REG_A1_A2_PACKED), 0);
+ M_INTMOVE(REG_RESULT, GET_LOW_REG(REG_A0_A1_PACKED));
+ M_MOV_IMM(GET_HIGH_REG(REG_A0_A1_PACKED), 0);
break;
case TYPE_LNG:
- M_LNGMOVE(REG_RESULT_PACKED, REG_A1_A2_PACKED);
+ M_LNGMOVE(REG_RESULT_PACKED, REG_A0_A1_PACKED);
break;
case TYPE_FLT:
- M_IST(REG_RESULT, REG_SP, 1 * 4);
+ M_IST(REG_RESULT, REG_SP, 0 * 4);
break;
case TYPE_DBL:
- M_INTMOVE(REG_RESULT, REG_A3);
- M_IST(REG_RESULT2, REG_SP, 0 * 4);
+ M_LNGMOVE(REG_RESULT_PACKED, REG_A2_A3_PACKED);
break;
}
disp = dseg_add_address(cd, m);
- M_DSEG_LOAD(REG_A0, disp);
- M_LONGBRANCH(builtin_displaymethodstop);
+ M_DSEG_LOAD(REG_ITMP1, disp);
+ M_AST(REG_ITMP1, REG_SP, 1 * 4);
+ M_LONGBRANCH(builtin_verbosecall_exit);
M_ADD_IMM(REG_SP, REG_SP, (1 + 1) * 4); /* free argument stack */
M_LDMFD(BITMASK_RESULT | (1<<REG_LR) | (1<<REG_PV), REG_SP);
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: emit.c 7255 2007-01-29 21:39:38Z twisti $
+ $Id: emit.c 7316 2007-02-10 19:06:54Z twisti $
*/
M_AST_IMM(m, REG_SP, TRACE_ARGS_NUM * 8);
- M_MOV_IMM(builtin_trace_args, REG_ITMP1);
+ M_MOV_IMM(builtin_verbosecall_enter, REG_ITMP1);
M_CALL(REG_ITMP1);
/* restore temporary registers for leaf methods */
Generates the code for the call trace.
+ void builtin_verbosecall_exit(s8 l, double d, float f, methodinfo *m);
+
*******************************************************************************/
#if !defined(NDEBUG)
M_NOP;
- M_ASUB_IMM(4 + 8 + 8 + 4 + 8, REG_SP); /* +8: keep stack 16-byte aligned */
+ M_ASUB_IMM(8 + 8 + 4 + 4 + 8, REG_SP); /* +8: keep stack 16-byte aligned */
- M_AST_IMM(m, REG_SP, 0 * 4);
+ M_LST(REG_RESULT_PACKED, REG_SP, 0 * 8);
- M_LST(REG_RESULT_PACKED, REG_SP, 1 * 4);
+ M_DSTNP(REG_NULL, REG_SP, 1 * 8);
+ M_FSTNP(REG_NULL, REG_SP, 2 * 8);
- M_DSTNP(REG_NULL, REG_SP, 1 * 4 + 1 * 8);
- M_FSTNP(REG_NULL, REG_SP, 1 * 4 + 2 * 8);
+ M_AST_IMM(m, REG_SP, 2 * 8 + 1 * 4);
- M_MOV_IMM(builtin_displaymethodstop, REG_ITMP1);
+ M_MOV_IMM(builtin_verbosecall_exit, REG_ITMP1);
M_CALL(REG_ITMP1);
- M_LLD(REG_RESULT_PACKED, REG_SP, 1 * 4);
+ M_LLD(REG_RESULT_PACKED, REG_SP, 0 * 4);
- M_AADD_IMM(4 + 8 + 8 + 4 + 8, REG_SP);
+ M_AADD_IMM(8 + 8 + 4 + 4 + 8, REG_SP);
/* mark trace code */
disp = dseg_add_address(cd, m);
M_ALD(REG_ITMP1, REG_PV, disp);
M_AST(REG_ITMP1, REG_SP, PA_SIZE + 0 * 8);
- disp = dseg_add_functionptr(cd, builtin_trace_args);
+ disp = dseg_add_functionptr(cd, builtin_verbosecall_enter);
M_ALD(REG_ITMP3, REG_PV, disp);
M_JSR(REG_RA, REG_ITMP3);
M_NOP;
Generates the code for the call trace.
+ void builtin_verbosecall_exit(s8 l, double d, float f, methodinfo *m);
+
*******************************************************************************/
#if !defined(NDEBUG)
M_NOP;
#if SIZEOF_VOID_P == 8
- M_LDA(REG_SP, REG_SP, -4 * 8); /* keep stack 16-byte aligned */
+ M_ASUB_IMM(REG_SP, 4 * 8, REG_SP); /* keep stack 16-byte aligned */
M_AST(REG_RA, REG_SP, 0 * 8);
M_LST(REG_RESULT, REG_SP, 1 * 8);
M_DST(REG_FRESULT, REG_SP, 2 * 8);
+
+ M_MOV(REG_RESULT, REG_A0);
+ M_DMOV(REG_FRESULT, REG_FA1);
+ M_FMOV(REG_FRESULT, REG_FA2);
+
+ disp = dseg_add_address(cd, m);
+ M_ALD(REG_A4, REG_PV, disp);
#else
- M_LDA(REG_SP, REG_SP, -(8*4 + 4 * 8));
+ M_ASUB_IMM(REG_SP, (8*4 + 4 * 8), REG_SP);
M_AST(REG_RA, REG_SP, 8*4 + 0 * 8);
M_LST(REG_RESULT_PACKED, REG_SP, 8*4 + 1 * 8);
M_DST(REG_FRESULT, REG_SP, 8*4 + 2 * 8);
-#endif
-
- disp = dseg_add_address(cd, m);
- M_ALD(rd->argintregs[0], REG_PV, disp);
-#if SIZEOF_VOID_P == 8
- M_MOV(REG_RESULT, rd->argintregs[1]);
- M_DMOV(REG_FRESULT, rd->argfltregs[2]);
- M_FMOV(REG_FRESULT, rd->argfltregs[3]);
-#else
switch (md->returntype.type) {
case TYPE_LNG:
-# if WORDS_BIGENDIAN == 1
- M_MOV(REG_RESULT, rd->argintregs[2]);
- M_MOV(REG_RESULT2, rd->argintregs[3]);
-# else
- M_MOV(REG_RESULT2, rd->argintregs[2]);
- M_MOV(REG_RESULT, rd->argintregs[3]);
-# endif
+ M_LNGMOVE(REG_RESULT_PACKED, REG_A0_A1_PACKED);
break;
+
default:
# if WORDS_BIGENDIAN == 1
- M_MOV(REG_ZERO, rd->argintregs[2]);
- M_MOV(REG_RESULT, rd->argintregs[3]);
+ M_MOV(REG_ZERO, REG_A0);
+ M_MOV(REG_RESULT, REG_A1);
# else
- M_MOV(REG_RESULT, rd->argintregs[2]);
- M_MOV(REG_ZERO, rd->argintregs[3]);
+ M_MOV(REG_RESULT, REG_A0);
+ M_MOV(REG_ZERO, REG_A1);
# endif
}
M_DST(REG_FRESULT, REG_SP, 4*4);
M_FST(REG_FRESULT, REG_SP, 4*4 + 2 * 4);
+
+ disp = dseg_add_address(cd, m);
+ M_ALD(REG_ITMP1, REG_PV, disp);
#endif
- disp = dseg_add_functionptr(cd, builtin_displaymethodstop);
+ disp = dseg_add_functionptr(cd, builtin_verbosecall_exit);
M_ALD(REG_ITMP3, REG_PV, disp);
M_JSR(REG_RA, REG_ITMP3);
M_NOP;
M_LLD(REG_RESULT, REG_SP, 1 * 8);
M_ALD(REG_RA, REG_SP, 0 * 8);
- M_LDA(REG_SP, REG_SP, 4 * 8);
+ M_AADD_IMM(REG_SP, 4 * 8, REG_SP);
#else
M_DLD(REG_FRESULT, REG_SP, 8*4 + 2 * 8);
M_LLD(REG_RESULT_PACKED, REG_SP, 8*4 + 1 * 8);
M_ALD(REG_RA, REG_SP, 8*4 + 0 * 8);
- M_LDA(REG_SP, REG_SP, 8*4 + 4 * 8);
+ M_AADD_IMM(REG_SP, 8*4 + 4 * 8, REG_SP);
#endif
/* mark trace code */
## src/vm/jit/mips/irix/Makefile.am
##
-## Copyright (C) 1996-2005, 2006 R. Grafl, A. Krall, C. Kruegel,
+## Copyright (C) 1996-2005, 2006, 2007 R. Grafl, A. Krall, C. Kruegel,
## C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring,
## E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich,
## J. Wenninger, Institut f. Computersprachen - TU Wien
## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
## 02110-1301, USA.
##
-## Contact: cacao@cacaojvm.org
-##
-## Authors: Christian Thalinger
-##
-## Changes:
-##
-## $Id: Makefile.am 4563 2006-03-06 13:03:05Z twisti $
+## $Id: Makefile.am 7316 2007-02-10 19:06:54Z twisti $
## Process this file with automake to produce Makefile.in
-AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/vm/jit/$(ARCH_DIR)
+AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/vm/jit/$(ARCH_DIR) -I$(top_builddir)/src
LIBS =
noinst_HEADERS =
-noinst_LTLIBRARIES = libmd.la
+noinst_LTLIBRARIES = \
+ libmd.la
libmd_la_SOURCES = \
md-os.c
## src/vm/jit/mips/linux/Makefile.am
##
-## Copyright (C) 1996-2005, 2006 R. Grafl, A. Krall, C. Kruegel,
+## Copyright (C) 1996-2005, 2006, 2007 R. Grafl, A. Krall, C. Kruegel,
## C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring,
## E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich,
## J. Wenninger, Institut f. Computersprachen - TU Wien
## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
## 02110-1301, USA.
##
-## Contact: cacao@cacaojvm.org
-##
-## Authors: Christian Thalinger
-##
-## Changes:
-##
-## $Id: Makefile.am 4563 2006-03-06 13:03:05Z twisti $
+## $Id: Makefile.am 7316 2007-02-10 19:06:54Z twisti $
## Process this file with automake to produce Makefile.in
-AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/vm/jit/$(ARCH_DIR)
+AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/vm/jit/$(ARCH_DIR) -I$(top_builddir)/src
LIBS =
noinst_HEADERS =
-noinst_LTLIBRARIES = libmd.la
+noinst_LTLIBRARIES = \
+ libmd.la
libmd_la_SOURCES = \
md-os.c
/* src/vm/jit/mips/md-abi.h - defines for MIPS ABI
- Copyright (C) 1996-2005, 2006 R. Grafl, A. Krall, C. Kruegel,
+ Copyright (C) 1996-2005, 2006, 2007 R. Grafl, A. Krall, C. Kruegel,
C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring,
E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich,
J. Wenninger, Institut f. Computersprachen - TU Wien
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- Contact: cacao@cacaojvm.org
-
- Authors: Christian Thalinger
-
- Changes: Christian Ullrich
-
- $Id: md-abi.h 7206 2007-01-11 22:39:52Z twisti $
+ $Id: md-abi.h 7316 2007-02-10 19:06:54Z twisti $
*/
#if SIZEOF_VOID_P == 4
# if WORDS_BIGENDIAN == 1
-# define REG_ITMP12_PACKED PACK_REGS(REG_ITMP2, REG_ITMP1)
-# define REG_ITMP23_PACKED PACK_REGS(REG_ITMP3, REG_ITMP2)
# define REG_RESULT_PACKED PACK_REGS(REG_RESULT2, REG_RESULT)
-# else
-# define REG_ITMP12_PACKED PACK_REGS(REG_ITMP1, REG_ITMP2)
-# define REG_ITMP23_PACKED PACK_REGS(REG_ITMP2, REG_ITMP3)
-# define REG_RESULT_PACKED PACK_REGS(REG_RESULT, REG_RESULT2)
-# endif
-#endif
+# define REG_A0_A1_PACKED PACK_REGS(REG_A1, REG_A0)
-/* ABI defines ****************************************************************/
-
-#if SIZEOF_VOID_P == 8
-# define PA_SIZE 0 /* we don't have a parameter area */
-#else
-# define PA_SIZE 4 * 4 /* parameter area is max. 4 * 4 bytes */
-#endif
-
-
-/* packed register defines ****************************************************/
-
-#if SIZEOF_VOID_P == 4
-# if WORDS_BIGENDIAN == 1
# define REG_ITMP12_PACKED PACK_REGS(REG_ITMP2, REG_ITMP1)
# define REG_ITMP23_PACKED PACK_REGS(REG_ITMP3, REG_ITMP2)
-# define REG_RESULT_PACKED PACK_REGS(REG_RESULT2, REG_RESULT)
# else
+# define REG_RESULT_PACKED PACK_REGS(REG_RESULT, REG_RESULT2)
+
+# define REG_A0_A1_PACKED PACK_REGS(REG_A0, REG_A1)
+
# define REG_ITMP12_PACKED PACK_REGS(REG_ITMP1, REG_ITMP2)
# define REG_ITMP23_PACKED PACK_REGS(REG_ITMP2, REG_ITMP3)
-# define REG_RESULT_PACKED PACK_REGS(REG_RESULT, REG_RESULT2)
# endif
#endif
#else
M_AST(REG_ITMP1, REG_SP, LA_SIZE + 4 * 8);
#endif
- p = dseg_add_functionptr(cd, builtin_trace_args);
+ p = dseg_add_functionptr(cd, builtin_verbosecall_enter);
M_ALD(REG_ITMP2, REG_PV, p);
M_MTCTR(REG_ITMP2);
M_JSR;
Generates the code for the call trace.
+ void builtin_verbosecall_exit(s8 l, double d, float f, methodinfo *m);
+
*******************************************************************************/
void emit_verbosecall_exit(jitdata *jd)
switch (md->returntype.type) {
case TYPE_INT:
case TYPE_ADR:
-#if defined(__DARWIN__)
- M_MOV(REG_RESULT, rd->argintregs[2]);
- M_CLR(rd->argintregs[1]);
-#else
- M_MOV(REG_RESULT, rd->argintregs[3]);
- M_CLR(rd->argintregs[2]);
-#endif
+ M_INTMOVE(REG_RESULT, REG_A1);
+ M_CLR(REG_A0);
break;
case TYPE_LNG:
-#if defined(__DARWIN__)
- M_MOV(REG_RESULT2, rd->argintregs[2]);
- M_MOV(REG_RESULT, rd->argintregs[1]);
-#else
- M_MOV(REG_RESULT2, rd->argintregs[3]);
- M_MOV(REG_RESULT, rd->argintregs[2]);
-#endif
+ M_LNGMOVE(REG_RESULT_PACKED, REG_A0_A1_PACKED);
break;
}
- M_FLTMOVE(REG_FRESULT, rd->argfltregs[0]);
- M_FLTMOVE(REG_FRESULT, rd->argfltregs[1]);
+ M_FLTMOVE(REG_FRESULT, REG_FA0);
+ M_FLTMOVE(REG_FRESULT, REG_FA1);
disp = dseg_add_address(cd, m);
- M_ALD(rd->argintregs[0], REG_PV, disp);
+ M_ALD(REG_A2, REG_PV, disp);
- disp = dseg_add_functionptr(cd, builtin_displaymethodstop);
+ disp = dseg_add_functionptr(cd, builtin_verbosecall_exit);
M_ALD(REG_ITMP2, REG_PV, disp);
M_MTCTR(REG_ITMP2);
M_JSR;
Changes:
- $Id: md-abi.h 5382 2006-09-06 21:17:00Z twisti $
+ $Id: md-abi.h 7316 2007-02-10 19:06:54Z twisti $
*/
#define REG_IFTMP 16 /* temporary integer and floating point register */
+#define REG_FA0 1 /* define some argument registers */
+#define REG_FA1 2
+
#define INT_REG_CNT 32 /* number of integer registers */
#define INT_SAV_CNT 10 /* number of int callee saved registers */
/* packed register defines ****************************************************/
+#define REG_RESULT_PACKED PACK_REGS(REG_RESULT2, REG_RESULT)
+
+#define REG_A0_A1_PACKED PACK_REGS(REG_A1, REG_A0)
+
#define REG_ITMP12_PACKED PACK_REGS(REG_ITMP2, REG_ITMP1)
#define REG_ITMP23_PACKED PACK_REGS(REG_ITMP3, REG_ITMP2)
-#define REG_RESULT_PACKED PACK_REGS(REG_RESULT2, REG_RESULT)
/* ABI defines ****************************************************************/