summaryrefslogtreecommitdiff
path: root/opcodes/hppa-dis.c
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>1999-09-19 20:17:48 +0000
committerJeff Law <law@redhat.com>1999-09-19 20:17:48 +0000
commitd994531ae477a39d58ebe46e04833534252f2bf4 (patch)
tree99d57ec8a146ede50b96b1eaf71b02a3bf1c6868 /opcodes/hppa-dis.c
parent5a0593be57fb1044dcb23db4e14bf7d1eb1442ff (diff)
downloadbinutils-redhat-d994531ae477a39d58ebe46e04833534252f2bf4.tar.gz
* hppa-dis.c: (print_insn_hppa): Correct 'cJ', 'cc'.
Diffstat (limited to 'opcodes/hppa-dis.c')
-rw-r--r--opcodes/hppa-dis.c68
1 files changed, 56 insertions, 12 deletions
diff --git a/opcodes/hppa-dis.c b/opcodes/hppa-dis.c
index e21815e298..35f32ecd7f 100644
--- a/opcodes/hppa-dis.c
+++ b/opcodes/hppa-dis.c
@@ -508,18 +508,6 @@ print_insn_hppa (memaddr, info)
(*info->fprintf_func) (info->stream, "%s ",
short_ldst_compl_names[GET_COMPL (insn)]);
break;
- case 'q':
- (*info->fprintf_func)
- (info->stream, "%s ",
- short_ldst_compl_names[(GET_FIELD (insn, 28, 28)
- | GET_FIELD (insn, 29, 29))]);
- break;
- case 'J':
- if (insn & 0x4)
- (*info->fprintf_func) (info->stream, ",mb ");
- else
- (*info->fprintf_func) (info->stream, ",ma ");
- break;
case 's':
(*info->fprintf_func) (info->stream, "%s ",
short_bytes_compl_names[GET_COMPL (insn)]);
@@ -617,6 +605,62 @@ print_insn_hppa (memaddr, info)
GET_FIELD (insn, 17, 18), GET_FIELD (insn, 20, 21),
GET_FIELD (insn, 22, 23), GET_FIELD (insn, 24, 25));
break;
+
+ case 'q':
+ {
+ int m, a;
+
+ m = GET_FIELD (insn, 28, 28);
+ a = GET_FIELD (insn, 29, 29);
+
+ if (m && !a)
+ fputs_filtered (",ma ", info);
+ else if (m && a)
+ fputs_filtered (",mb ", info);
+ else
+ fputs_filtered (" ", info);
+ break;
+ }
+
+ case 'J':
+ {
+ int opcode = GET_FIELD (insn, 0, 5);
+
+ if (opcode == 0x16 || opcode == 0x1e)
+ {
+ if (GET_FIELD (insn, 29, 29) == 0)
+ fputs_filtered (",ma ", info);
+ else
+ fputs_filtered (",mb ", info);
+ }
+ else
+ fputs_filtered (" ", info);
+ break;
+ }
+
+ case 'c':
+ {
+ int opcode = GET_FIELD (insn, 0, 5);
+
+ if (opcode == 0x13 || opcode == 0x1b)
+ {
+ if (GET_FIELD (insn, 18, 18) == 1)
+ fputs_filtered (",mb ", info);
+ else
+ fputs_filtered (",ma ", info);
+ }
+ else if (opcode == 0x17 || opcode == 0x1f)
+ {
+ if (GET_FIELD (insn, 31, 31) == 1)
+ fputs_filtered (",ma ", info);
+ else
+ fputs_filtered (",mb ", info);
+ }
+ else
+ fputs_filtered (" ", info);
+
+ break;
+ }
}
break;