aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-hppa.c
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>1999-11-25 03:27:35 +0000
committerJeff Law <law@redhat.com>1999-11-25 03:27:35 +0000
commitafbf211f5a95b53762a4640af859e67b85e365d7 (patch)
tree17975e88e4ea895da9f8a9783f1df9cff4f2a3d2 /gas/config/tc-hppa.c
parent50e05050cddfd84925e0dc7a09228cb15035f4fa (diff)
downloadgdb-afbf211f5a95b53762a4640af859e67b85e365d7.zip
gdb-afbf211f5a95b53762a4640af859e67b85e365d7.tar.gz
gdb-afbf211f5a95b53762a4640af859e67b85e365d7.tar.bz2
* config/tc-hppa.c (pa_ip): Handle PA2.0 unit completers. Handle
'B' operand for PA2.0 bb instruction.
Diffstat (limited to 'gas/config/tc-hppa.c')
-rw-r--r--gas/config/tc-hppa.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c
index d733577..fe53273 100644
--- a/gas/config/tc-hppa.c
+++ b/gas/config/tc-hppa.c
@@ -2794,6 +2794,30 @@ pa_ip (str)
flag = 1;
s += 3;
}
+ else if (strncasecmp (s, "swz", 3) == 0)
+ {
+ cmpltr = 1;
+ flag = 0;
+ s += 3;
+ }
+ else if (strncasecmp (s, "swc", 3) == 0)
+ {
+ cmpltr = 5;
+ flag = 0;
+ s += 3;
+ }
+ else if (strncasecmp (s, "nwz", 3) == 0)
+ {
+ cmpltr = 1;
+ flag = 1;
+ s += 3;
+ }
+ else if (strncasecmp (s, "nwc", 3) == 0)
+ {
+ cmpltr = 5;
+ flag = 1;
+ s += 3;
+ }
/* ",*" is a valid condition. */
else if (*args != 'U')
as_bad (_("Invalid Unit Instruction Condition."));
@@ -3307,6 +3331,20 @@ pa_ip (str)
opcode |= (num & 0x20) << 6;
INSERT_FIELD_AND_CONTINUE (opcode, num & 0x1f, 5);
+ /* Handle a 5 bit immediate at 10 with 'd' as the complement
+ of the high bit of the immediate. */
+ case 'B':
+ num = pa_get_absolute_expression (&the_insn, &s);
+ if (strict && the_insn.exp.X_op != O_constant)
+ break;
+ s = expr_end;
+ CHECK_FIELD (num, 63, 0, strict);
+ if (num & 0x20)
+ ;
+ else
+ opcode |= (1 << 13);
+ INSERT_FIELD_AND_CONTINUE (opcode, num & 0x1f, 21);
+
/* Handle a 5 bit immediate at 10. */
case 'Q':
num = pa_get_absolute_expression (&the_insn, &s);