From 6c639ef96454b5b9b0cd9aed854607af7937f600 Mon Sep 17 00:00:00 2001 From: Martin Schwidefsky Date: Fri, 12 Aug 2005 18:00:56 +0000 Subject: [PATCH] * config/tc-s390.c (md_parse_option): Add cpu type z9-109. (md_gather_operands): Add support for optional operands. --- gas/ChangeLog | 5 +++++ gas/config/tc-s390.c | 47 ++++++++++++++++++++++++++++++++++++++------ 2 files changed, 46 insertions(+), 6 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index bc98f76da43..fa0b749a32a 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 87c7a88f32e..56b5b2594f8 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++; } } } -- 2.30.2