* config/tc-hppa.c (pa_ip): Add cases for '.', '~'. '$'. and '!'
This commit is contained in:
parent
e9fc28c6b6
commit
a97685e901
2 changed files with 44 additions and 0 deletions
|
@ -1,5 +1,7 @@
|
||||||
Sat Aug 28 00:26:26 1999 Jerry Quinn <jquinn@nortelnetworks.com>
|
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'.
|
* config/tc-hppa.c (pa_ip): Add case for 'I'.
|
||||||
|
|
||||||
1999-08-27 Jim Wilson <wilson@cygnus.com>
|
1999-08-27 Jim Wilson <wilson@cygnus.com>
|
||||||
|
|
|
@ -1569,6 +1569,25 @@ pa_ip (str)
|
||||||
CHECK_FIELD (num, 31, 0, 0);
|
CHECK_FIELD (num, 31, 0, 0);
|
||||||
INSERT_FIELD_AND_CONTINUE (opcode, num, 21);
|
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. */
|
/* Handle a 5 bit register field at 15. */
|
||||||
case 'x':
|
case 'x':
|
||||||
num = pa_parse_number (&s, 0);
|
num = pa_parse_number (&s, 0);
|
||||||
|
@ -2436,6 +2455,13 @@ pa_ip (str)
|
||||||
continue;
|
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. */
|
/* Handle a 5 bit shift count at 26. */
|
||||||
case 'p':
|
case 'p':
|
||||||
num = pa_get_absolute_expression (&the_insn, &s);
|
num = pa_get_absolute_expression (&the_insn, &s);
|
||||||
|
@ -2443,6 +2469,15 @@ pa_ip (str)
|
||||||
CHECK_FIELD (num, 31, 0, 0);
|
CHECK_FIELD (num, 31, 0, 0);
|
||||||
INSERT_FIELD_AND_CONTINUE (opcode, 31 - num, 5);
|
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. */
|
/* Handle a 5 bit bit position at 26. */
|
||||||
case 'P':
|
case 'P':
|
||||||
num = pa_get_absolute_expression (&the_insn, &s);
|
num = pa_get_absolute_expression (&the_insn, &s);
|
||||||
|
@ -2460,6 +2495,13 @@ pa_ip (str)
|
||||||
CHECK_FIELD (num, 31, 0, 0);
|
CHECK_FIELD (num, 31, 0, 0);
|
||||||
INSERT_FIELD_AND_CONTINUE (opcode, num, 21);
|
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. */
|
/* Handle a 13 bit immediate at 18. */
|
||||||
case 'A':
|
case 'A':
|
||||||
num = pa_get_absolute_expression (&the_insn, &s);
|
num = pa_get_absolute_expression (&the_insn, &s);
|
||||||
|
|
Loading…
Reference in a new issue