aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>1999-09-19 19:46:52 +0000
committerJeff Law <law@redhat.com>1999-09-19 19:46:52 +0000
commit71823da428aa35e33eaedb4e298a98f01f4d8387 (patch)
treed9fcd77d367aba9e097f6e7a38922f6a81009a88 /gas
parentc49ec3da04e9d80d89cbc70863e4c4c1366dbd58 (diff)
downloadfsf-binutils-gdb-71823da428aa35e33eaedb4e298a98f01f4d8387.zip
fsf-binutils-gdb-71823da428aa35e33eaedb4e298a98f01f4d8387.tar.gz
fsf-binutils-gdb-71823da428aa35e33eaedb4e298a98f01f4d8387.tar.bz2
* config/tc-hppa.c (pa_ip); Handle "fe", and 'cJ'.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog2
-rw-r--r--gas/config/tc-hppa.c25
2 files changed, 25 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 913dd76..5fe9bbf 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,7 @@
Sun Sep 19 10:43:31 1999 Jeffrey A Law (law@cygnus.com)
+ * config/tc-hppa.c (pa_ip); Handle "fe", and 'cJ'.
+
* config/tc-hppa.c (pa_ip): Handle 'd', '#' and 'cq'.
* config/tc-hppa.c (struct pa_it): New field "trunc".
diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c
index 755585a..191b6cd 100644
--- a/gas/config/tc-hppa.c
+++ b/gas/config/tc-hppa.c
@@ -1786,6 +1786,7 @@ pa_ip (str)
/* Handle a short load/store completer. */
case 'm':
case 'q':
+ case 'J':
{
int a = 0;
int m = 0;
@@ -1810,8 +1811,8 @@ pa_ip (str)
s += 2;
}
- /* 'm' and 'q' are the same, except for where they encode
- the before/after field. */
+ /* 'J', 'm' and 'q' are the same, except for where they
+ encode the before/after field. */
if (*args == 'm')
{
opcode |= m << 5;
@@ -1822,6 +1823,11 @@ pa_ip (str)
opcode |= m << 3;
INSERT_FIELD_AND_CONTINUE (opcode, a, 2);
}
+ else if (*args == 'J')
+ {
+ /* M bit is explicit in the major opcode. */
+ INSERT_FIELD_AND_CONTINUE (opcode, a, 2);
+ }
}
/* Handle a stbys completer. */
@@ -3605,6 +3611,21 @@ pa_ip (str)
INSERT_FIELD_AND_CONTINUE (opcode, result.number_part, 11);
}
+ /* Handle L/R register halves like 'x'. */
+ case 'e':
+ {
+ struct pa_11_fp_reg_struct result;
+
+ if (strict && *s != '%')
+ break;
+ pa_parse_number (&s, &result);
+ CHECK_FIELD (result.number_part, 31, 0, 0);
+ opcode |= (result.number_part & 0x1f) << 16;
+ if (need_pa11_opcode (&the_insn, &result))
+ {
+ opcode |= (result.l_r_select & 1) << 1;
+ }
+ continue;
default:
abort ();
}