Patch to get romp target working

Kaveh R. Ghazi ghazi@caip.rutgers.edu
Mon Oct 8 14:46:00 GMT 2001


 > From: Richard Henderson <rth@redhat.com>
 > 
 > On Mon, Oct 08, 2001 at 04:23:33PM -0400, Kaveh R. Ghazi wrote:
 > > +  rtx _addr, _temp;
 > > +  rtx _val;
 > 
 > Lose the underscores.
 > 
 > > +  _temp = expand_binop (SImode, add_optab, tramp, GEN_INT (4),
 > > +			0, 1, OPTAB_LIB_WIDEN);
 > 
 > I think preferred procedure is to use expand_simple_binop.
 > r~


How's this one?


2001-10-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* romp-protos.h (romp_initialize_trampoline): New function.
	* romp.c (romp_initialize_trampoline): Likewise.
	* romp.h (INITIALIZE_TRAMPOLINE): Define in terms of
	romp_initialize_trampoline.

diff -rup orig/egcs-CVS20011008/gcc/config/romp/romp-protos.h egcs-CVS20011008/gcc/config/romp/romp-protos.h
--- orig/egcs-CVS20011008/gcc/config/romp/romp-protos.h	Fri Jul  6 16:31:19 2001
+++ egcs-CVS20011008/gcc/config/romp/romp-protos.h	Mon Oct  8 17:27:41 2001
@@ -47,6 +47,7 @@ extern int reg_15_operand PARAMS ((rtx, 
 extern int float_binary PARAMS ((rtx, enum machine_mode));
 extern int float_unary PARAMS ((rtx, enum machine_mode));
 extern int float_conversion PARAMS ((rtx, enum machine_mode));
+extern void romp_initialize_trampoline PARAMS ((rtx, rtx, rtx));
 #endif /* RTX_CODE */
 
 extern int first_reg_to_save PARAMS ((void));
diff -rup orig/egcs-CVS20011008/gcc/config/romp/romp.c egcs-CVS20011008/gcc/config/romp/romp.c
--- orig/egcs-CVS20011008/gcc/config/romp/romp.c	Fri Aug 10 16:30:25 2001
+++ egcs-CVS20011008/gcc/config/romp/romp.c	Mon Oct  8 17:36:48 2001
@@ -2046,3 +2046,28 @@ romp_debugger_arg_correction (offset)
 
   return (offset - fp_to_argp);
 }
+
+void
+romp_initialize_trampoline (tramp, fnaddr, cxt)
+     rtx tramp, fnaddr, cxt;
+{
+  rtx addr, temp, val;
+
+  temp = expand_simple_binop (SImode, PLUS, tramp, GEN_INT (4),
+			       0, 1, OPTAB_LIB_WIDEN);
+  emit_move_insn (gen_rtx_MEM (SImode, memory_address (SImode, tramp)), temp);
+
+  val = force_reg (SImode, cxt);
+  addr = memory_address (HImode, plus_constant (tramp, 10));
+  emit_move_insn (gen_rtx_MEM (HImode, addr), gen_lowpart (HImode, val));
+  temp = expand_shift (RSHIFT_EXPR, SImode, val, build_int_2 (16, 0), 0, 1);
+  addr = memory_address (HImode, plus_constant (tramp, 6));
+  emit_move_insn (gen_rtx_MEM (HImode, addr), gen_lowpart (HImode, temp));
+
+  val = force_reg (SImode, fnaddr);
+  addr = memory_address (HImode, plus_constant (tramp, 24));
+  emit_move_insn (gen_rtx_MEM (HImode, addr), gen_lowpart (HImode, val));
+  temp = expand_shift (RSHIFT_EXPR, SImode, val, build_int_2 (16, 0), 0, 1);
+  addr = memory_address (HImode, plus_constant (tramp, 20));
+  emit_move_insn (gen_rtx_MEM (HImode, addr), gen_lowpart (HImode, temp));
+}
diff -rup orig/egcs-CVS20011008/gcc/config/romp/romp.h egcs-CVS20011008/gcc/config/romp/romp.h
--- orig/egcs-CVS20011008/gcc/config/romp/romp.h	Tue Sep 11 13:36:10 2001
+++ egcs-CVS20011008/gcc/config/romp/romp.h	Mon Oct  8 17:27:41 2001
@@ -785,37 +785,7 @@ struct rt_cargs {int gregs, fregs; };
    data area.  */
 
 #define INITIALIZE_TRAMPOLINE(ADDR, FNADDR, CXT)		\
-{								\
-  rtx _addr, _temp;						\
-  rtx _val;							\
-								\
-  _temp = expand_binop (SImode, add_optab, ADDR,		\
-			GEN_INT (4),				\
-			0, 1, OPTAB_LIB_WIDEN);			\
-  emit_move_insn (gen_rtx_MEM (SImode,				\
-			       memory_address (SImode, ADDR)), _temp); \
-								\
-  _val = force_reg (SImode, CXT);				\
-  _addr = memory_address (HImode, plus_constant (ADDR, 10));	\
-  emit_move_insn (gen_rtx_MEM (HImode, _addr),			\
-		  gen_lowpart (HImode, _val));			\
-  _temp = expand_shift (RSHIFT_EXPR, SImode, _val,		\
-			build_int_2 (16, 0), 0, 1);		\
-  _addr = memory_address (HImode, plus_constant (ADDR, 6));	\
-  emit_move_insn (gen_rtx_MEM (HImode, _addr),			\
-		  gen_lowpart (HImode, _temp));			\
-								\
-  _val = force_reg (SImode, FNADDR);				\
-  _addr = memory_address (HImode, plus_constant (ADDR, 24));	\
-  emit_move_insn (gen_rtx_MEM (HImode, _addr),			\
-		  gen_lowpart (HImode, _val));			\
-  _temp = expand_shift (RSHIFT_EXPR, SImode, _val,		\
-			build_int_2 (16, 0), 0, 1);		\
-  _addr = memory_address (HImode, plus_constant (ADDR, 20));	\
-  emit_move_insn (gen_rtx_MEM (HImode, _addr),			\
-		  gen_lowpart (HImode, _temp));			\
-								\
-}
+	romp_initialize_trampoline (ADDR, FNADDR, CXT)
 
 /* Definitions for register eliminations.
 



More information about the Gcc-patches mailing list