From 8d3580d0906e7bcf42a7464fba457080d71c2e6a Mon Sep 17 00:00:00 2001 From: Andrew Cagney Date: Wed, 29 Jul 1998 00:14:29 +0000 Subject: Fix incorrect calculation of conditional field when being extracted from a previous decode. --- sim/igen/ChangeLog | 5 +++++ sim/igen/gen.c | 11 ++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/sim/igen/ChangeLog b/sim/igen/ChangeLog index b5f6371..4040c6b 100644 --- a/sim/igen/ChangeLog +++ b/sim/igen/ChangeLog @@ -1,3 +1,8 @@ +Wed Jul 29 10:07:27 1998 Andrew Cagney + + * 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 * ld-insn.c (parse_insn_word): For constant conditional strings, diff --git a/sim/igen/gen.c b/sim/igen/gen.c index 5cc7e76..53b1c1f 100644 --- a/sim/igen/gen.c +++ b/sim/igen/gen.c @@ -1039,8 +1039,17 @@ gen_entry_expand_opcode (gen_entry *table, /* the table entry fully specified the condition field's value */ + /* extract the field's value + from the opcode */ 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); } } } -- cgit v1.1