2005-09-09 Dmitry Diky <diwil@spec.ru>

* config/tc-msp430.c (msp430_operands): Undo last changes. Instead...
	(msp430_relax_frag): add a guard check to ensure that final fr_subtype
	has been reached.
This commit is contained in:
Dmitry Diky 2005-09-09 08:46:19 +00:00
parent e04bcc6d65
commit 3e470ab5cd
2 changed files with 16 additions and 9 deletions

View File

@ -1,3 +1,9 @@
2005-09-09 Dmitry Diky <diwil@spec.ru>
* config/tc-msp430.c (msp430_operands): Undo last changes. Instead...
(msp430_relax_frag): add a guard check to ensure that final fr_subtype
has been reached.
2005-09-08 Chao-ying Fu <fu@mips.com> 2005-09-08 Chao-ying Fu <fu@mips.com>
* doc/as.texinfo: Document -mdsp and -mno-dsp options. * doc/as.texinfo: Document -mdsp and -mno-dsp options.

View File

@ -1778,14 +1778,14 @@ msp430_operands (struct msp430_opcode_s * opcode, char * line)
of the insn from the fix piece of instruction that was emitted. of the insn from the fix piece of instruction that was emitted.
Since next fragments may have variable size we tie debug info Since next fragments may have variable size we tie debug info
to the beginning of the instruction. */ to the beginning of the instruction. */
frag = frag_more (0); frag = frag_more (8);
dwarf2_emit_insn (0); dwarf2_emit_insn (0);
frag = frag_var/*iant*/ (rs_machine_dependent, 8, 2, bfd_putl16 ((bfd_vma) rc.sop, frag);
frag = frag_variant (rs_machine_dependent, 8, 2,
ENCODE_RELAX (rc.lpos, STATE_BITS10), /* Wild guess. */ ENCODE_RELAX (rc.lpos, STATE_BITS10), /* Wild guess. */
exp.X_add_symbol, exp.X_add_symbol,
0, /* Offset is zero if jump dist less than 1K. */ 0, /* Offset is zero if jump dist less than 1K. */
(char *) frag); (char *) frag);
bfd_putl16 ((bfd_vma) rc.sop, frag);
break; break;
} }
} }
@ -1815,15 +1815,16 @@ msp430_operands (struct msp430_opcode_s * opcode, char * line)
/* Relaxation required. */ /* Relaxation required. */
struct hcodes_s hc = msp430_hcodes[opcode->insn_opnumb]; struct hcodes_s hc = msp430_hcodes[opcode->insn_opnumb];
frag = frag_more (0); frag = frag_more (8);
dwarf2_emit_insn (0); dwarf2_emit_insn (0);
frag = frag_var/*iant*/ (rs_machine_dependent, 8, 2, bfd_putl16 ((bfd_vma) hc.op0, frag);
bfd_putl16 ((bfd_vma) hc.op1, frag+2);
frag = frag_variant (rs_machine_dependent, 8, 2,
ENCODE_RELAX (STATE_EMUL_BRANCH, STATE_BITS10), /* Wild guess. */ ENCODE_RELAX (STATE_EMUL_BRANCH, STATE_BITS10), /* Wild guess. */
exp.X_add_symbol, exp.X_add_symbol,
0, /* Offset is zero if jump dist less than 1K. */ 0, /* Offset is zero if jump dist less than 1K. */
(char *) frag); (char *) frag);
bfd_putl16 ((bfd_vma) hc.op0, frag);
bfd_putl16 ((bfd_vma) hc.op1, frag+2);
break; break;
} }
} }
@ -2305,7 +2306,7 @@ msp430_relax_frag (segT seg ATTRIBUTE_UNUSED, fragS * fragP,
{ {
/* Look backwards. */ /* Look backwards. */
for (next_state = this_type->rlx_more; next_state;) for (next_state = this_type->rlx_more; next_state;)
if (aim >= this_type->rlx_backward) if (aim >= this_type->rlx_backward || !this_type->rlx_backward)
next_state = 0; next_state = 0;
else else
{ {
@ -2319,7 +2320,7 @@ msp430_relax_frag (segT seg ATTRIBUTE_UNUSED, fragS * fragP,
{ {
/* Look forwards. */ /* Look forwards. */
for (next_state = this_type->rlx_more; next_state;) for (next_state = this_type->rlx_more; next_state;)
if (aim <= this_type->rlx_forward) if (aim <= this_type->rlx_forward || !this_type->rlx_forward)
next_state = 0; next_state = 0;
else else
{ {