aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-s390.c17
2 files changed, 16 insertions, 6 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 6b9b617..5ac943a 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2010-10-28 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * config/tc-s390.c (md_begin): Only add to hash table if cpu and
+ mode mask fit.
+
2010-10-28 Alan Modra <amodra@gmail.com>
* config/tc-d30v.c (d30v_cons_align): Don't align .eh_frame.
diff --git a/gas/config/tc-s390.c b/gas/config/tc-s390.c
index cf9f8a1..273ddd6 100644
--- a/gas/config/tc-s390.c
+++ b/gas/config/tc-s390.c
@@ -506,13 +506,18 @@ md_begin (void)
break;
op++;
}
- retval = hash_insert (s390_opcode_hash, op->name, (void *) op);
- if (retval != (const char *) NULL)
- {
- as_bad (_("Internal assembler error for instruction %s"),
- op->name);
- dup_insn = TRUE;
+
+ if (op->min_cpu <= current_cpu && (op->modes & current_mode_mask))
+ {
+ retval = hash_insert (s390_opcode_hash, op->name, (void *) op);
+ if (retval != (const char *) NULL)
+ {
+ as_bad (_("Internal assembler error for instruction %s"),
+ op->name);
+ dup_insn = TRUE;
+ }
}
+
while (op < op_end - 1 && strcmp (op->name, op[1].name) == 0)
op++;
}