aboutsummaryrefslogtreecommitdiff
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
commit9c1faa822937bd4bc031d0dc9e5404c8f6b23c8f (patch)
tree0c495bf39c7064825e1331fc952c3891b0133526
parentb3fe7ee28094aefa7eb930b8585e7352be0cf30f (diff)
downloadgdb-9c1faa822937bd4bc031d0dc9e5404c8f6b23c8f.zip
gdb-9c1faa822937bd4bc031d0dc9e5404c8f6b23c8f.tar.gz
gdb-9c1faa822937bd4bc031d0dc9e5404c8f6b23c8f.tar.bz2
* hppa-dis.c: (print_insn_hppa): Correct 'cJ', 'cc'.
-rw-r--r--opcodes/ChangeLog2
-rw-r--r--opcodes/hppa-dis.c68
2 files changed, 58 insertions, 12 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 29e0915..839c4e6 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,5 +1,7 @@
Sun Sep 19 10:41:27 1999 Jeffrey A Law (law@cygnus.com)
+ * hppa-dis.c: (print_insn_hppa): Correct 'cJ', 'cc'.
+
* hppa-dis.c (extract_22): New function.
* hppa-dis.c (print_insn_hppa): Handle 'J', 'K', and 'cc'.
diff --git a/opcodes/hppa-dis.c b/opcodes/hppa-dis.c
index e21815e..35f32ec 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;