diff options
author | Jeff Law <law@redhat.com> | 1999-11-25 03:27:35 +0000 |
---|---|---|
committer | Jeff Law <law@redhat.com> | 1999-11-25 03:27:35 +0000 |
commit | afbf211f5a95b53762a4640af859e67b85e365d7 (patch) | |
tree | 17975e88e4ea895da9f8a9783f1df9cff4f2a3d2 /gas/config/tc-hppa.c | |
parent | 50e05050cddfd84925e0dc7a09228cb15035f4fa (diff) | |
download | gdb-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.c | 38 |
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); |