Fix incorrect calculation of conditional field when being extracted

from a previous decode.
This commit is contained in:
Andrew Cagney 1998-07-29 00:14:29 +00:00
parent d846a17c70
commit 8d3580d090
2 changed files with 15 additions and 1 deletions

View File

@ -1,3 +1,8 @@
Wed Jul 29 10:07:27 1998 Andrew Cagney <cagney@b1.cygnus.com>
* gen.c (gen_entry_expand_opcode): Extract the field value from an
opcode using the correct location bits.
Tue Jul 28 11:19:43 1998 Andrew Cagney <cagney@b1.cygnus.com> Tue Jul 28 11:19:43 1998 Andrew Cagney <cagney@b1.cygnus.com>
* ld-insn.c (parse_insn_word): For constant conditional strings, * ld-insn.c (parse_insn_word): For constant conditional strings,

View File

@ -1039,8 +1039,17 @@ gen_entry_expand_opcode (gen_entry *table,
/* the table entry fully /* the table entry fully
specified the condition specified the condition
field's value */ field's value */
/* extract the field's value
from the opcode */
value = sub_val (t->opcode_nr, t->parent->opcode->last, value = sub_val (t->opcode_nr, t->parent->opcode->last,
first_pos, last_pos); condition->field->first, condition->field->last);
/* this is a requirement of
a conditonal field
refering to another field */
ASSERT ((condition->field->first - condition->field->last)
== (first_pos - last_pos));
printf ("value=%d, opcode_nr=%d, last=%d, [%d..%d]\n",
value, t->opcode_nr, t->parent->opcode->last, condition->field->first, condition->field->last);
} }
} }
} }