sparc.c (sparc_initialize_trampoline): Use trunc_int_for_mode.
* config/sparc/sparc.c (sparc_initialize_trampoline): Use trunc_int_for_mode. From-SVN: r50225
This commit is contained in:
parent
80ead968ef
commit
526921692d
|
@ -1,5 +1,8 @@
|
|||
Sat Mar 2 06:30:14 2002 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
||||
|
||||
* config/sparc/sparc.c (sparc_initialize_trampoline): Use
|
||||
trunc_int_for_mode.
|
||||
|
||||
* emit-rtl.c (offset_address): Call update_temp_slot_address.
|
||||
|
||||
2002-03-01 Richard Henderson <rth@redhat.com>
|
||||
|
|
|
@ -6263,37 +6263,39 @@ sparc_initialize_trampoline (tramp, fnaddr, cxt)
|
|||
0, VOIDmode, 1, tramp, Pmode);
|
||||
#endif
|
||||
|
||||
emit_move_insn (gen_rtx_MEM (SImode, plus_constant (tramp, 0)),
|
||||
expand_binop (SImode, ior_optab,
|
||||
expand_shift (RSHIFT_EXPR, SImode, fnaddr,
|
||||
size_int (10), 0, 1),
|
||||
GEN_INT (0x03000000),
|
||||
NULL_RTX, 1, OPTAB_DIRECT));
|
||||
emit_move_insn
|
||||
(gen_rtx_MEM (SImode, plus_constant (tramp, 0)),
|
||||
expand_binop (SImode, ior_optab,
|
||||
expand_shift (RSHIFT_EXPR, SImode, fnaddr,
|
||||
size_int (10), 0, 1),
|
||||
GEN_INT (trunc_int_for_mode (0x03000000, SImode)),
|
||||
NULL_RTX, 1, OPTAB_DIRECT));
|
||||
|
||||
emit_move_insn (gen_rtx_MEM (SImode, plus_constant (tramp, 4)),
|
||||
expand_binop (SImode, ior_optab,
|
||||
expand_shift (RSHIFT_EXPR, SImode, cxt,
|
||||
size_int (10), 0, 1),
|
||||
GEN_INT (0x05000000),
|
||||
NULL_RTX, 1, OPTAB_DIRECT));
|
||||
emit_move_insn
|
||||
(gen_rtx_MEM (SImode, plus_constant (tramp, 4)),
|
||||
expand_binop (SImode, ior_optab,
|
||||
expand_shift (RSHIFT_EXPR, SImode, cxt,
|
||||
size_int (10), 0, 1),
|
||||
GEN_INT (trunc_int_for_mode (0x05000000, SImode)),
|
||||
NULL_RTX, 1, OPTAB_DIRECT));
|
||||
|
||||
emit_move_insn (gen_rtx_MEM (SImode, plus_constant (tramp, 8)),
|
||||
expand_binop (SImode, ior_optab,
|
||||
expand_and (SImode, fnaddr, GEN_INT (0x3ff),
|
||||
NULL_RTX),
|
||||
GEN_INT (0x81c06000),
|
||||
NULL_RTX, 1, OPTAB_DIRECT));
|
||||
emit_move_insn
|
||||
(gen_rtx_MEM (SImode, plus_constant (tramp, 8)),
|
||||
expand_binop (SImode, ior_optab,
|
||||
expand_and (SImode, fnaddr, GEN_INT (0x3ff), NULL_RTX),
|
||||
GEN_INT (trunc_int_for_mode (0x81c06000, SImode)),
|
||||
NULL_RTX, 1, OPTAB_DIRECT));
|
||||
|
||||
emit_move_insn (gen_rtx_MEM (SImode, plus_constant (tramp, 12)),
|
||||
expand_binop (SImode, ior_optab,
|
||||
expand_and (SImode, cxt, GEN_INT (0x3ff),
|
||||
NULL_RTX),
|
||||
GEN_INT (0x8410a000),
|
||||
NULL_RTX, 1, OPTAB_DIRECT));
|
||||
emit_move_insn
|
||||
(gen_rtx_MEM (SImode, plus_constant (tramp, 12)),
|
||||
expand_binop (SImode, ior_optab,
|
||||
expand_and (SImode, cxt, GEN_INT (0x3ff), NULL_RTX),
|
||||
GEN_INT (trunc_int_for_mode (0x8410a000, SImode)),
|
||||
NULL_RTX, 1, OPTAB_DIRECT));
|
||||
|
||||
emit_insn (gen_flush (validize_mem (gen_rtx_MEM (SImode, tramp))));
|
||||
/* On UltraSPARC a flush flushes an entire cache line. The trampoline is
|
||||
aligned on a 16 byte boundary so one flush clears it all. */
|
||||
emit_insn (gen_flush (validize_mem (gen_rtx_MEM (SImode, tramp))));
|
||||
if (sparc_cpu != PROCESSOR_ULTRASPARC)
|
||||
emit_insn (gen_flush (validize_mem (gen_rtx_MEM (SImode,
|
||||
plus_constant (tramp, 8)))));
|
||||
|
|
Loading…
Reference in New Issue