diff --git a/gas/ChangeLog b/gas/ChangeLog index bc98f76da4..fa0b749a32 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2005-08-12 Martin Schwidefsky + + * config/tc-s390.c (md_parse_option): Add cpu type z9-109. + (md_gather_operands): Add support for optional operands. + 2005-08-12 Dmitry Diky * config/tc-msp430.c (msp430_enable_relax): New flag. (msp430_enable_polys): Likewise. diff --git a/gas/config/tc-s390.c b/gas/config/tc-s390.c index 87c7a88f32..56b5b2594f 100644 --- a/gas/config/tc-s390.c +++ b/gas/config/tc-s390.c @@ -410,6 +410,8 @@ md_parse_option (c, arg) current_cpu = S390_OPCODE_Z900; else if (strcmp (arg + 5, "z990") == 0) current_cpu = S390_OPCODE_Z990; + else if (strcmp (arg + 5, "z9-109") == 0) + current_cpu = S390_OPCODE_Z9_109; else { as_bad (_("invalid switch -m%s"), arg); @@ -1353,8 +1355,19 @@ md_gather_operands (str, insn, opcode) /* If there is a next operand it must be separated by a comma. */ if (opindex_ptr[1] != '\0') { - if (*str++ != ',') - as_bad (_("syntax error; expected ,")); + if (*str != ',') + { + while (opindex_ptr[1] != '\0') + { + operand = s390_operands + *(++opindex_ptr); + if (operand->flags & S390_OPERAND_OPTIONAL) + continue; + as_bad (_("syntax error; expected ,")); + break; + } + } + else + str++; } } else @@ -1386,8 +1399,19 @@ md_gather_operands (str, insn, opcode) /* If there is a next operand it must be separated by a comma. */ if (opindex_ptr[1] != '\0') { - if (*str++ != ',') - as_bad (_("syntax error; expected ,")); + if (*str != ',') + { + while (opindex_ptr[1] != '\0') + { + operand = s390_operands + *(++opindex_ptr); + if (operand->flags & S390_OPERAND_OPTIONAL) + continue; + as_bad (_("syntax error; expected ,")); + break; + } + } + else + str++; } } else @@ -1405,8 +1429,19 @@ md_gather_operands (str, insn, opcode) /* If there is a next operand it must be separated by a comma. */ if (opindex_ptr[1] != '\0') { - if (*str++ != ',') - as_bad (_("syntax error; expected ,")); + if (*str != ',') + { + while (opindex_ptr[1] != '\0') + { + operand = s390_operands + *(++opindex_ptr); + if (operand->flags & S390_OPERAND_OPTIONAL) + continue; + as_bad (_("syntax error; expected ,")); + break; + } + } + else + str++; } } }