Commit e5db8f2f by Nick Clifton Committed by Nick Clifton

v850.c (expand_prologue): Do not use the CALLT instruction for interrupt handlers if...

	* config/v850/v850.c (expand_prologue): Do not use the CALLT
	instruction for interrupt handlers if the target is the basic V850
	architecture.
	(expand_epilogue): Likewise.

From-SVN: r172313
parent 74f091d6
2011-04-12 Nick Clifton <nickc@redhat.com>
* config/v850/v850.c (expand_prologue): Do not use the CALLT
instruction for interrupt handlers if the target is the basic V850
architecture.
(expand_epilogue): Likewise.
2011-04-12 Jakub Jelinek <jakub@redhat.com> 2011-04-12 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/48549 PR rtl-optimization/48549
......
...@@ -1690,7 +1690,7 @@ expand_prologue (void) ...@@ -1690,7 +1690,7 @@ expand_prologue (void)
/* Save/setup global registers for interrupt functions right now. */ /* Save/setup global registers for interrupt functions right now. */
if (interrupt_handler) if (interrupt_handler)
{ {
if (! TARGET_DISABLE_CALLT) if (! TARGET_DISABLE_CALLT && (TARGET_V850E || TARGET_V850E2_ALL))
emit_insn (gen_callt_save_interrupt ()); emit_insn (gen_callt_save_interrupt ());
else else
emit_insn (gen_save_interrupt ()); emit_insn (gen_save_interrupt ());
...@@ -1772,7 +1772,7 @@ expand_prologue (void) ...@@ -1772,7 +1772,7 @@ expand_prologue (void)
/* Special case interrupt functions that save all registers for a call. */ /* Special case interrupt functions that save all registers for a call. */
if (interrupt_handler && ((1L << LINK_POINTER_REGNUM) & reg_saved) != 0) if (interrupt_handler && ((1L << LINK_POINTER_REGNUM) & reg_saved) != 0)
{ {
if (! TARGET_DISABLE_CALLT) if (! TARGET_DISABLE_CALLT && (TARGET_V850E || TARGET_V850E2_ALL))
emit_insn (gen_callt_save_all_interrupt ()); emit_insn (gen_callt_save_all_interrupt ());
else else
emit_insn (gen_save_all_interrupt ()); emit_insn (gen_save_all_interrupt ());
...@@ -2023,7 +2023,7 @@ expand_epilogue (void) ...@@ -2023,7 +2023,7 @@ expand_epilogue (void)
/* And return or use reti for interrupt handlers. */ /* And return or use reti for interrupt handlers. */
if (interrupt_handler) if (interrupt_handler)
{ {
if (! TARGET_DISABLE_CALLT) if (! TARGET_DISABLE_CALLT && (TARGET_V850E || TARGET_V850E2_ALL))
emit_insn (gen_callt_return_interrupt ()); emit_insn (gen_callt_return_interrupt ());
else else
emit_jump_insn (gen_return_interrupt ()); emit_jump_insn (gen_return_interrupt ());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment