diff options
author | Jeff Law <law@redhat.com> | 1999-09-19 20:17:48 +0000 |
---|---|---|
committer | Jeff Law <law@redhat.com> | 1999-09-19 20:17:48 +0000 |
commit | 9c1faa822937bd4bc031d0dc9e5404c8f6b23c8f (patch) | |
tree | 0c495bf39c7064825e1331fc952c3891b0133526 /opcodes | |
parent | b3fe7ee28094aefa7eb930b8585e7352be0cf30f (diff) | |
download | gdb-9c1faa822937bd4bc031d0dc9e5404c8f6b23c8f.zip gdb-9c1faa822937bd4bc031d0dc9e5404c8f6b23c8f.tar.gz gdb-9c1faa822937bd4bc031d0dc9e5404c8f6b23c8f.tar.bz2 |
* hppa-dis.c: (print_insn_hppa): Correct 'cJ', 'cc'.
Diffstat (limited to 'opcodes')
-rw-r--r-- | opcodes/ChangeLog | 2 | ||||
-rw-r--r-- | opcodes/hppa-dis.c | 68 |
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; |