aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-hppa.c
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>1999-08-28 08:16:30 +0000
committerJeff Law <law@redhat.com>1999-08-28 08:16:30 +0000
commit28252e6156e6923e30495ff4ae1e562a7185295a (patch)
tree53353e5e454cac6d0e97d15fbb97d0b8aec96693 /gas/config/tc-hppa.c
parent3590ea008dd88690c919e7ae7e48409538feb52a (diff)
downloadgdb-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.c165
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);