aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorghazi <ghazi@138bc75d-0d04-0410-961f-82ee72b054a4>2001-10-08 21:55:05 +0000
committerghazi <ghazi@138bc75d-0d04-0410-961f-82ee72b054a4>2001-10-08 21:55:05 +0000
commitedb39f41641611afd98137f3c20d9920fe554701 (patch)
tree171d5a0438ed08588a5ac088e6771b51b6e3cef9
parentff5c6fe29beef46e9276293b70430eea3b70fa0d (diff)
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46104 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/romp/romp-protos.h1
-rw-r--r--gcc/config/romp/romp.c25
-rw-r--r--gcc/config/romp/romp.h32
4 files changed, 34 insertions, 31 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9069a13f935..e8f087cf292 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,12 @@
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.
+
+2001-10-08 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
* m68k/3b1.h (ASM_OUTPUT_SOURCE_LINE): Don't reference `last_linenum'.
* m68k/auxas.h (ASM_OUTPUT_SOURCE_LINE): Likewise.
* m68k/crds.h (ASM_OUTPUT_SOURCE_LINE): Likewise.
diff --git a/gcc/config/romp/romp-protos.h b/gcc/config/romp/romp-protos.h
index fcf2439a54c..8ec306f3802 100644
--- a/gcc/config/romp/romp-protos.h
+++ b/gcc/config/romp/romp-protos.h
@@ -47,6 +47,7 @@ extern int reg_15_operand PARAMS ((rtx, enum machine_mode));
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 --git a/gcc/config/romp/romp.c b/gcc/config/romp/romp.c
index 6cdb77e80f1..2d9f9772ecd 100644
--- a/gcc/config/romp/romp.c
+++ b/gcc/config/romp/romp.c
@@ -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 --git a/gcc/config/romp/romp.h b/gcc/config/romp/romp.h
index 2e517a19cb5..d1d3174d990 100644
--- a/gcc/config/romp/romp.h
+++ b/gcc/config/romp/romp.h
@@ -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.