mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-13 05:16:47 +08:00
m68hc11.c (m68hc11_gen_movhi): Use 2,-sp to push the stack register.
* config/m68hc11/m68hc11.c (m68hc11_gen_movhi): Use 2,-sp to push the stack register. (expand_prologue): Don't make an interrupt or a trap handler a far symbol. (m68hc11_initial_elimination_offset): Likewise. From-SVN: r79058
This commit is contained in:
parent
7179b6dbfe
commit
a75ea627dd
@ -1,3 +1,11 @@
|
||||
2004-03-06 Stephane Carrez <stcarrez@nerim.fr>
|
||||
|
||||
* config/m68hc11/m68hc11.c (m68hc11_gen_movhi): Use 2,-sp to push
|
||||
the stack register.
|
||||
(expand_prologue): Don't make an interrupt or a trap handler a far
|
||||
symbol.
|
||||
(m68hc11_initial_elimination_offset): Likewise.
|
||||
|
||||
2004-03-06 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* config/alpha/alpha.c (alpha_in_small_data_p): False for functions.
|
||||
|
@ -1402,15 +1402,19 @@ m68hc11_initial_elimination_offset (int from, int to)
|
||||
/* For a trap handler, we must take into account the registers which
|
||||
are pushed on the stack during the trap (except the PC). */
|
||||
func_attr = TYPE_ATTRIBUTES (TREE_TYPE (current_function_decl));
|
||||
current_function_interrupt = lookup_attribute ("interrupt",
|
||||
func_attr) != NULL_TREE;
|
||||
trap_handler = lookup_attribute ("trap", func_attr) != NULL_TREE;
|
||||
|
||||
if (lookup_attribute ("far", func_attr) != 0)
|
||||
current_function_far = 1;
|
||||
else if (lookup_attribute ("near", func_attr) != 0)
|
||||
current_function_far = 0;
|
||||
else
|
||||
current_function_far = TARGET_LONG_CALLS != 0;
|
||||
current_function_far = (TARGET_LONG_CALLS != 0
|
||||
&& !current_function_interrupt
|
||||
&& !trap_handler);
|
||||
|
||||
trap_handler = lookup_attribute ("trap", func_attr) != NULL_TREE;
|
||||
if (trap_handler && from == ARG_POINTER_REGNUM)
|
||||
size = 7;
|
||||
|
||||
@ -1690,7 +1694,9 @@ expand_prologue (void)
|
||||
else if (lookup_attribute ("near", func_attr) != NULL_TREE)
|
||||
current_function_far = 0;
|
||||
else
|
||||
current_function_far = TARGET_LONG_CALLS != 0;
|
||||
current_function_far = (TARGET_LONG_CALLS != 0
|
||||
&& !current_function_interrupt
|
||||
&& !current_function_trap);
|
||||
|
||||
/* Get the scratch register to build the frame and push registers.
|
||||
If the first argument is a 32-bit quantity, the D+X registers
|
||||
@ -3235,7 +3241,7 @@ m68hc11_gen_movhi (rtx insn, rtx *operands)
|
||||
output_asm_insn ("psh%1", operands);
|
||||
break;
|
||||
case HARD_SP_REGNUM:
|
||||
output_asm_insn ("sts\t-2,sp", operands);
|
||||
output_asm_insn ("sts\t2,-sp", operands);
|
||||
break;
|
||||
default:
|
||||
abort ();
|
||||
|
Loading…
Reference in New Issue
Block a user