Commit 513f31eb by Kazu Hirata Committed by Kazu Hirata

h8300.c (dosize): Output r7/er7 instead of sp.

	* config/h8300/h8300.c (dosize): Output r7/er7 instead of sp.
	(push): Likewise.
	(pop): Likewise.
	(h8300_output_function_prologue): Likewise.
	(h8300_output_function_epilogue): Likewise.

From-SVN: r59718
parent 7ffc9761
2002-12-02 Kazu Hirata <kazu@cs.umass.edu>
* config/h8300/h8300.c (dosize): Output r7/er7 instead of sp.
(push): Likewise.
(pop): Likewise.
(h8300_output_function_prologue): Likewise.
(h8300_output_function_epilogue): Likewise.
Mon Dec 2 14:43:22 2002 J"orn Rennecke <joern.rennecke@superh.com> Mon Dec 2 14:43:22 2002 J"orn Rennecke <joern.rennecke@superh.com>
* expmed.c (store_bit_field): Use int_mode_for_mode to find * expmed.c (store_bit_field): Use int_mode_for_mode to find
......
...@@ -418,16 +418,20 @@ dosize (file, op, size) ...@@ -418,16 +418,20 @@ dosize (file, op, size)
amount > 0; amount > 0;
amount /= 2) amount /= 2)
{ {
char insn[100];
sprintf (insn, "\t%ss\t#%d,%s\n", op, amount,
TARGET_H8300 ? "r7" : "er7");
for (; size >= amount; size -= amount) for (; size >= amount; size -= amount)
fprintf (file, "\t%ss\t#%d,sp\n", op, amount); fputs (insn, file);
} }
} }
else else
{ {
if (TARGET_H8300) if (TARGET_H8300)
fprintf (file, "\tmov.w\t#%d,r3\n\t%s.w\tr3,sp\n", size, op); fprintf (file, "\tmov.w\t#%d,r3\n\t%s.w\tr3,r7\n", size, op);
else else
fprintf (file, "\t%s.l\t#%d,sp\n", op, size); fprintf (file, "\t%s.l\t#%d,er7\n", op, size);
} }
} }
...@@ -471,7 +475,10 @@ push (file, rn) ...@@ -471,7 +475,10 @@ push (file, rn)
FILE *file; FILE *file;
int rn; int rn;
{ {
fprintf (file, "\t%s\t%s\n", h8_push_op, h8_reg_names[rn]); if (TARGET_H8300)
fprintf (file, "\t%s\t%s,@-r7\n", h8_mov_op, h8_reg_names[rn]);
else
fprintf (file, "\t%s\t%s,@-er7\n", h8_mov_op, h8_reg_names[rn]);
} }
/* Output assembly language code to pop register RN. */ /* Output assembly language code to pop register RN. */
...@@ -481,7 +488,10 @@ pop (file, rn) ...@@ -481,7 +488,10 @@ pop (file, rn)
FILE *file; FILE *file;
int rn; int rn;
{ {
fprintf (file, "\t%s\t%s\n", h8_pop_op, h8_reg_names[rn]); if (TARGET_H8300)
fprintf (file, "\t%s\t@r7+,%s\n", h8_mov_op, h8_reg_names[rn]);
else
fprintf (file, "\t%s\t@er7+,%s\n", h8_mov_op, h8_reg_names[rn]);
} }
/* This is what the stack looks like after the prolog of /* This is what the stack looks like after the prolog of
...@@ -604,7 +614,7 @@ h8300_output_function_prologue (file, size) ...@@ -604,7 +614,7 @@ h8300_output_function_prologue (file, size)
if (n_regs == 1) if (n_regs == 1)
push (file, regno); push (file, regno);
else else
fprintf (file, "\tstm.l\t%s-%s,@-sp\n", fprintf (file, "\tstm.l\t%s-%s,@-er7\n",
h8_reg_names[regno], h8_reg_names[regno],
h8_reg_names[regno + (n_regs - 1)]); h8_reg_names[regno + (n_regs - 1)]);
} }
...@@ -670,7 +680,7 @@ h8300_output_function_epilogue (file, size) ...@@ -670,7 +680,7 @@ h8300_output_function_epilogue (file, size)
if (n_regs == 1) if (n_regs == 1)
pop (file, regno); pop (file, regno);
else else
fprintf (file, "\tldm.l\t@sp+,%s-%s\n", fprintf (file, "\tldm.l\t@er7+,%s-%s\n",
h8_reg_names[regno - (n_regs - 1)], h8_reg_names[regno - (n_regs - 1)],
h8_reg_names[regno]); h8_reg_names[regno]);
} }
......
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