Author: chromatic
Date: Mon Mar 31 22:04:59 2008
New Revision: 26685
Added:
trunk/src/jit/arm/exec_dep.c (contents, props changed)
Modified:
trunk/MANIFEST
trunk/src/jit/arm/exec_dep.h
trunk/src/jit/i386/exec_dep.h
Log:
[JIT] Fixed the JIT build on ARM accidentally broken in r26636. This also
finishes more of what RT #47289 tried to accomplish.
Modified: trunk/MANIFEST
==============================================================================
--- trunk/MANIFEST (original)
+++ trunk/MANIFEST Mon Mar 31 22:04:59 2008
@@ -2729,6 +2729,7 @@
src/jit/amd64/core.jit []
src/jit/amd64/jit_emit.h []
src/jit/arm/core.jit []
+src/jit/arm/exec_dep.c []
src/jit/arm/exec_dep.h []
src/jit/arm/jit_emit.h []
src/jit/hppa/core.jit []
@@ -2743,8 +2744,8 @@
src/jit/mips/jit_emit.h []
src/jit/ppc/asm.s []
src/jit/ppc/core.jit []
-src/jit/ppc/exec_dep.h []
src/jit/ppc/exec_dep.c []
+src/jit/ppc/exec_dep.h []
src/jit/ppc/jit_emit.h []
src/jit/ppc/ppc-linux.s []
src/jit/skeleton/jit_emit.h []
Added: trunk/src/jit/arm/exec_dep.c
==============================================================================
--- (empty file)
+++ trunk/src/jit/arm/exec_dep.c Mon Mar 31 22:04:59 2008
@@ -0,0 +1,96 @@
+/* Copyright (C) 2003-2008, The Perl Foundation. */
+
+/*
+ * exec_dep.c
+ *
+ * SVN Info
+ * $Id$
+ * Overview:
+ * ARM dependent functions to emit an executable.
+ * History:
+ * Initial version by Daniel Grunblatt on 2003.8.12
+ * Notes:
+ * References:
+ */
+
+#ifndef PARROT_ARM_EXEC_DEP_H_GUARD
+#define PARROT_ARM_EXEC_DEP_H_GUARD
+
+#ifdef JIT_CGP
+
+void
+Parrot_exec_normal_op(Parrot_jit_info_t *jit_info, PARROT_INTERP)
+{
+}
+
+#else /* JIT_CGP */
+
+void
+Parrot_exec_normal_op(Parrot_jit_info_t *jit_info, PARROT_INTERP)
+{
+ jit_info->native_ptr = emit_mov(jit_info->native_ptr, r1, r4);
+# ifndef ARM_K_BUG
+ jit_info->native_ptr = emit_mov(jit_info->native_ptr, REG14_lr, REG15_pc);
+ jit_info->native_ptr = emit_ldmstm(jit_info->native_ptr,
+ cond_AL, is_load, dir_IA,
+ is_writeback,
+ REG14_lr,
+ reg2mask(0) | reg2mask(REG15_pc));
+# else
+ jit_info->native_ptr = emit_arith_immediate(jit_info->native_ptr, cond_AL,
+ ADD, 0, REG14_lr, REG15_pc,
+ 4, 0);
+ jit_info->native_ptr = emit_ldmstm(jit_info->native_ptr,
+ cond_AL, is_load, dir_IA,
+ is_writeback,
+ REG14_lr,
+ reg2mask(0) | reg2mask(REG12_ip));
+ jit_info->native_ptr = emit_mov(jit_info->native_ptr, REG15_pc, REG12_ip);
+# endif /* ARM_K_BUG */
+ Parrot_exec_add_text_rellocation(jit_info->objfile,
+ jit_info->native_ptr, RTYPE_DATA, "program_code", 0);
+ jit_info->native_ptr
+ = emit_word(jit_info->native_ptr, ((int)jit_info->cur_op) -
+ ((int)interp->code->base.data) +
+ (jit_info->objfile->bytecode_header_size));
+ Parrot_exec_add_text_rellocation(jit_info->objfile,
+ jit_info->native_ptr, RTYPE_FUNC,
+ interp->op_info_table[*jit_info->cur_op].func_name, 0);
+ jit_info->native_ptr
+ = emit_word(jit_info->native_ptr, 0);
+}
+
+#endif /* JIT_CGP */
+
+void
+Parrot_exec_cpcf_op(Parrot_jit_info_t *jit_info, PARROT_INTERP)
+{
+ Parrot_exec_normal_op(jit_info, interp);
+ Parrot_jump_to_op_in_reg(jit_info, interp, r0);
+}
+
+void
+Parrot_exec_restart_op(Parrot_jit_info_t *jit_info, PARROT_INTERP)
+{
+}
+
+/* Assign the offset of the progra_code */
+static void
+offset_fixup(Parrot_exec_objfile_t *obj)
+{
+ int i, j;
+
+ for (i = 0; i < obj->data_count; i++) {
+ for (j = 0; j < i; j++)
+ obj->symbol_table[i].value += obj->data_size[j];
+ }
+}
+
+#endif /* PARROT_ARM_EXEC_DEP_H_GUARD */
+
+/*
+ * Local variables:
+ * c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
Modified: trunk/src/jit/arm/exec_dep.h
==============================================================================
--- trunk/src/jit/arm/exec_dep.h (original)
+++ trunk/src/jit/arm/exec_dep.h Mon Mar 31 22:04:59 2008
@@ -1,6 +1,4 @@
-/*
- * Copyright (C) 2003-2007, The Perl Foundation.
- */
+/* Copyright (C) 2003-2008, The Perl Foundation. */
/*
* exec_dep.h
@@ -21,80 +19,27 @@
#ifdef JIT_CGP
void
-Parrot_exec_normal_op(Parrot_jit_info_t *jit_info,
- PARROT_INTERP)
-{
-}
+Parrot_exec_normal_op(Parrot_jit_info_t *jit_info, PARROT_INTERP);
#else /* JIT_CGP */
void
-Parrot_exec_normal_op(Parrot_jit_info_t *jit_info,
- PARROT_INTERP)
-{
- jit_info->native_ptr = emit_mov(jit_info->native_ptr, r1, r4);
-# ifndef ARM_K_BUG
- jit_info->native_ptr = emit_mov(jit_info->native_ptr, REG14_lr, REG15_pc);
- jit_info->native_ptr = emit_ldmstm(jit_info->native_ptr,
- cond_AL, is_load, dir_IA,
- is_writeback,
- REG14_lr,
- reg2mask(0) | reg2mask(REG15_pc));
-# else
- jit_info->native_ptr = emit_arith_immediate(jit_info->native_ptr, cond_AL,
- ADD, 0, REG14_lr, REG15_pc,
- 4, 0);
- jit_info->native_ptr = emit_ldmstm(jit_info->native_ptr,
- cond_AL, is_load, dir_IA,
- is_writeback,
- REG14_lr,
- reg2mask(0) | reg2mask(REG12_ip));
- jit_info->native_ptr = emit_mov(jit_info->native_ptr, REG15_pc, REG12_ip);
-# endif /* ARM_K_BUG */
- Parrot_exec_add_text_rellocation(jit_info->objfile,
- jit_info->native_ptr, RTYPE_DATA, "program_code", 0);
- jit_info->native_ptr
- = emit_word(jit_info->native_ptr, ((int)jit_info->cur_op) -
- ((int)interp->code->base.data) +
- (jit_info->objfile->bytecode_header_size));
- Parrot_exec_add_text_rellocation(jit_info->objfile,
- jit_info->native_ptr, RTYPE_FUNC,
- interp->op_info_table[*jit_info->cur_op].func_name, 0);
- jit_info->native_ptr
- = emit_word(jit_info->native_ptr, 0);
-}
+Parrot_exec_normal_op(Parrot_jit_info_t *jit_info, PARROT_INTERP);
#endif /* JIT_CGP */
void
-Parrot_exec_cpcf_op(Parrot_jit_info_t *jit_info,
- PARROT_INTERP)
-{
- Parrot_exec_normal_op(jit_info, interp);
- Parrot_jump_to_op_in_reg(jit_info, interp, r0);
-}
+Parrot_exec_cpcf_op(Parrot_jit_info_t *jit_info, PARROT_INTERP);
void
-Parrot_exec_restart_op(Parrot_jit_info_t *jit_info,
- PARROT_INTERP)
-{
-}
+Parrot_exec_restart_op(Parrot_jit_info_t *jit_info, PARROT_INTERP);
-/* Assign the offset of the progra_code */
+/* Assign the offset of the program_code */
static void
-offset_fixup(Parrot_exec_objfile_t *obj)
-{
- int i, j;
-
- for (i = 0; i < obj->data_count; i++) {
- for (j = 0; j < i; j++)
- obj->symbol_table[i].value += obj->data_size[j];
- }
-}
+offset_fixup(Parrot_exec_objfile_t *obj);
#endif /* PARROT_ARM_EXEC_DEP_H_GUARD */
-
/*
* Local variables:
* c-file-style: "parrot"
Modified: trunk/src/jit/i386/exec_dep.h
==============================================================================
--- trunk/src/jit/i386/exec_dep.h (original)
+++ trunk/src/jit/i386/exec_dep.h Mon Mar 31 22:04:59 2008
@@ -1,6 +1,4 @@
-/*
- * Copyright (C) 2003-2008, The Perl Foundation.
- */
+/* Copyright (C) 2003-2008, The Perl Foundation. */
/*
* exec_dep.h
@@ -30,7 +28,6 @@
void
offset_fixup(Parrot_exec_objfile_t *obj);
-
#endif /* PARROT_I386_EXEC_DEP_H_GUARD */
/*