diff options
author | Jeff Law <law@redhat.com> | 1999-08-28 08:16:30 +0000 |
---|---|---|
committer | Jeff Law <law@redhat.com> | 1999-08-28 08:16:30 +0000 |
commit | 28252e6156e6923e30495ff4ae1e562a7185295a (patch) | |
tree | 53353e5e454cac6d0e97d15fbb97d0b8aec96693 /gas/config/tc-hppa.c | |
parent | 3590ea008dd88690c919e7ae7e48409538feb52a (diff) | |
download | gdb-28252e6156e6923e30495ff4ae1e562a7185295a.zip gdb-28252e6156e6923e30495ff4ae1e562a7185295a.tar.gz gdb-28252e6156e6923e30495ff4ae1e562a7185295a.tar.bz2 |
* config/tc-hppa.c (pa_ip): Place completers behind prefix 'c'.
Diffstat (limited to 'gas/config/tc-hppa.c')
-rw-r--r-- | gas/config/tc-hppa.c | 165 |
1 files changed, 86 insertions, 79 deletions
diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c index ade965a..77c4153 100644 --- a/gas/config/tc-hppa.c +++ b/gas/config/tc-hppa.c @@ -1651,92 +1651,111 @@ pa_ip (str) dis_assemble_3 (num, &num); INSERT_FIELD_AND_CONTINUE (opcode, num, 13); - /* Handle a completer for an indexing load or store. */ + /* Handle all completers. */ case 'c': - { - int uu = 0; - int m = 0; - int i = 0; - while (*s == ',' && i < 2) + switch (*++args) + { + + /* Handle a completer for an indexing load or store. */ + case 'x': { - s++; - if (strncasecmp (s, "sm", 2) == 0) + int uu = 0; + int m = 0; + int i = 0; + while (*s == ',' && i < 2) { - uu = 1; - m = 1; + s++; + if (strncasecmp (s, "sm", 2) == 0) + { + uu = 1; + m = 1; + s++; + i++; + } + else if (strncasecmp (s, "m", 1) == 0) + m = 1; + else if (strncasecmp (s, "s", 1) == 0) + uu = 1; + else + as_bad (_("Invalid Indexed Load Completer.")); s++; i++; } - else if (strncasecmp (s, "m", 1) == 0) - m = 1; - else if (strncasecmp (s, "s", 1) == 0) - uu = 1; - else - as_bad (_("Invalid Indexed Load Completer.")); - s++; - i++; + if (i > 2) + as_bad (_("Invalid Indexed Load Completer Syntax.")); + opcode |= m << 5; + INSERT_FIELD_AND_CONTINUE (opcode, uu, 13); } - if (i > 2) - as_bad (_("Invalid Indexed Load Completer Syntax.")); - opcode |= m << 5; - INSERT_FIELD_AND_CONTINUE (opcode, uu, 13); - } - /* Handle a short load/store completer. */ - case 'C': - { - int a = 0; - int m = 0; - if (*s == ',') + /* Handle a short load/store completer. */ + case 'm': { - s++; - if (strncasecmp (s, "ma", 2) == 0) - { - a = 0; - m = 1; - } - else if (strncasecmp (s, "mb", 2) == 0) + int a = 0; + int m = 0; + if (*s == ',') { - a = 1; - m = 1; + s++; + if (strncasecmp (s, "ma", 2) == 0) + { + a = 0; + m = 1; + } + else if (strncasecmp (s, "mb", 2) == 0) + { + a = 1; + m = 1; + } + else + as_bad (_("Invalid Short Load/Store Completer.")); + s += 2; } - else - as_bad (_("Invalid Short Load/Store Completer.")); - s += 2; - } - if (*args == 'C') - { opcode |= m << 5; INSERT_FIELD_AND_CONTINUE (opcode, a, 13); } - } - /* Handle a stbys completer. */ - case 'Y': - { - int a = 0; - int m = 0; - int i = 0; - while (*s == ',' && i < 2) + /* Handle a stbys completer. */ + case 's': { - s++; - if (strncasecmp (s, "m", 1) == 0) - m = 1; - else if (strncasecmp (s, "b", 1) == 0) - a = 0; - else if (strncasecmp (s, "e", 1) == 0) - a = 1; - else + int a = 0; + int m = 0; + int i = 0; + while (*s == ',' && i < 2) + { + s++; + if (strncasecmp (s, "m", 1) == 0) + m = 1; + else if (strncasecmp (s, "b", 1) == 0) + a = 0; + else if (strncasecmp (s, "e", 1) == 0) + a = 1; + else + as_bad (_("Invalid Store Bytes Short Completer")); + s++; + i++; + } + if (i > 2) as_bad (_("Invalid Store Bytes Short Completer")); - s++; - i++; + opcode |= m << 5; + INSERT_FIELD_AND_CONTINUE (opcode, a, 13); } - if (i > 2) - as_bad (_("Invalid Store Bytes Short Completer")); - opcode |= m << 5; - INSERT_FIELD_AND_CONTINUE (opcode, a, 13); - } + + /* Handle a system control completer. */ + case 'Z': + if (*s == ',' && (*(s + 1) == 'm' || *(s + 1) == 'M')) + { + flag = 1; + s += 2; + } + else + flag = 0; + + INSERT_FIELD_AND_CONTINUE (opcode, flag, 5); + + default: + abort (); + } + break; /* Handle all conditions. */ case '?': @@ -2266,18 +2285,6 @@ pa_ip (str) break; } - /* Handle a system control completer. */ - case 'Z': - if (*s == ',' && (*(s + 1) == 'm' || *(s + 1) == 'M')) - { - flag = 1; - s += 2; - } - else - flag = 0; - - INSERT_FIELD_AND_CONTINUE (opcode, flag, 5); - /* Handle a nullification completer for branch instructions. */ case 'n': nullif = pa_parse_nullif (&s); |