From: Jeff Law Date: Sat, 28 Aug 1999 06:42:06 +0000 (+0000) Subject: * config/tc-hppa.c (pa_ip): Add cases for '.', '~'. '$'. and '!' X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a97685e9019395395592d12c5e81e22807d620a7;p=binutils-gdb.git * config/tc-hppa.c (pa_ip): Add cases for '.', '~'. '$'. and '!' --- diff --git a/gas/ChangeLog b/gas/ChangeLog index 0386fd2633c..9523ba5916c 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,7 @@ Sat Aug 28 00:26:26 1999 Jerry Quinn + * config/tc-hppa.c (pa_ip): Add cases for '.', '~'. '$'. and '!' + * config/tc-hppa.c (pa_ip): Add case for 'I'. 1999-08-27 Jim Wilson diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c index 39dee7cb01c..f79295c77f3 100644 --- a/gas/config/tc-hppa.c +++ b/gas/config/tc-hppa.c @@ -1569,6 +1569,25 @@ pa_ip (str) CHECK_FIELD (num, 31, 0, 0); INSERT_FIELD_AND_CONTINUE (opcode, num, 21); + /* Handle %sar or %cr11. No bits get set, we just verify that it + is there. */ + case '!': + /* Skip whitespace before register. */ + while (*s == ' ' || *s == '\t') + s = s + 1; + + if (!strncasecmp(s, "%sar", 4)) + { + s += 4; + continue; + } + else if (!strncasecmp(s, "%cr11", 5)) + { + s += 5; + continue; + } + break; + /* Handle a 5 bit register field at 15. */ case 'x': num = pa_parse_number (&s, 0); @@ -2436,6 +2455,13 @@ pa_ip (str) continue; } + /* Handle a 2 bit shift count at 25. */ + case '.': + num = pa_get_absolute_expression (&the_insn, &s); + s = expr_end; + CHECK_FIELD (num, 3, 1, 0); + INSERT_FIELD_AND_CONTINUE (opcode, num, 6); + /* Handle a 5 bit shift count at 26. */ case 'p': num = pa_get_absolute_expression (&the_insn, &s); @@ -2443,6 +2469,15 @@ pa_ip (str) CHECK_FIELD (num, 31, 0, 0); INSERT_FIELD_AND_CONTINUE (opcode, 31 - num, 5); + /* Handle a 6 bit shift count at 20,22:26. */ + case '~': + num = pa_get_absolute_expression (&the_insn, &s); + s = expr_end; + CHECK_FIELD (num, 63, 0, 0); + num = 63 - num; + opcode |= (num & 0x20) << 6; + INSERT_FIELD_AND_CONTINUE (opcode, num & 0x1f, 5); + /* Handle a 5 bit bit position at 26. */ case 'P': num = pa_get_absolute_expression (&the_insn, &s); @@ -2460,6 +2495,13 @@ pa_ip (str) CHECK_FIELD (num, 31, 0, 0); INSERT_FIELD_AND_CONTINUE (opcode, num, 21); + /* Handle a 9 bit immediate at 28. */ + case '$': + num = pa_get_absolute_expression (&the_insn, &s); + s = expr_end; + CHECK_FIELD (num, 511, 1, 0); + INSERT_FIELD_AND_CONTINUE (opcode, num, 3); + /* Handle a 13 bit immediate at 18. */ case 'A': num = pa_get_absolute_expression (&the_insn, &s);