diff options
author | Richard Henderson <rth@redhat.com> | 2000-08-07 21:44:26 +0000 |
---|---|---|
committer | Richard Henderson <rth@redhat.com> | 2000-08-07 21:44:26 +0000 |
commit | 0228082a3c8835e2475666e63c1ee6b4b6d9ac32 (patch) | |
tree | 77db6a76f227bd42bb29baac554d84fd7c2f3505 | |
parent | 2d484c7fa2a3742c776b0e027f931293af74b8ac (diff) | |
download | gdb-0228082a3c8835e2475666e63c1ee6b4b6d9ac32.zip gdb-0228082a3c8835e2475666e63c1ee6b4b6d9ac32.tar.gz gdb-0228082a3c8835e2475666e63c1ee6b4b6d9ac32.tar.bz2 |
* ia64-dis.c (print_insn_ia64): Get byte skip count correct
for MLI templates. Handle IA64_OPND_TGT64.
-rw-r--r-- | opcodes/ChangeLog | 5 | ||||
-rw-r--r-- | opcodes/ia64-dis.c | 9 |
2 files changed, 13 insertions, 1 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 04440c2..21402f6 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,8 @@ +2000-08-07 Richard Henderson <rth@cygnus.com> + + * ia64-dis.c (print_insn_ia64): Get byte skip count correct + for MLI templates. Handle IA64_OPND_TGT64. + 2000-07-29 Marek Michalkiewicz <marekm@linux.org.pl> * avr-dis.c (avr_operand): Use PARAMS macro in declaration. diff --git a/opcodes/ia64-dis.c b/opcodes/ia64-dis.c index d4ea62b..629a768 100644 --- a/opcodes/ia64-dis.c +++ b/opcodes/ia64-dis.c @@ -117,7 +117,7 @@ print_insn_ia64 (bfd_vma memaddr, struct disassemble_info *info) { /* skip L slot in MLI template: */ slotnum = 2; - retval += slot_multiplier; + retval = 16 - slot_multiplier; } insn = slot[slotnum]; @@ -165,6 +165,13 @@ print_insn_ia64 (bfd_vma memaddr, struct disassemble_info *info) | (((insn >> 36) & 0x1) << 20) | ((insn >> 6) & 0xfffff); } + else if (odesc - elf64_ia64_operands == IA64_OPND_TGT64) + { + /* 60-bit immedate for long branches. */ + value = (((insn >> 13) & 0xfffff) + | (((insn >> 36) & 1) << 59) + | (slot[1] << 20)) << 4; + } else { err = (*odesc->extract) (odesc, insn, &value); |