aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog2
-rw-r--r--gas/config/tc-hppa.c42
2 files changed, 44 insertions, 0 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 0386fd2..9523ba5 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,7 @@
Sat Aug 28 00:26:26 1999 Jerry Quinn <jquinn@nortelnetworks.com>
+ * 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 <wilson@cygnus.com>
diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c
index 39dee7c..f79295c 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);