X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=opcodes%2Fia64-dis.c;h=f9add9177702361aaf630fa7b6064c45d1e1f0f8;hb=82f6ea4af0dd72905fd33701ae19574a7c312e21;hp=7a68597de1502af8b70bf750bfe29e6157e413f8;hpb=27e232885db363fb545fd2f450e72d929e59b8f6;p=deliverable%2Fbinutils-gdb.git diff --git a/opcodes/ia64-dis.c b/opcodes/ia64-dis.c index 7a68597de1..f9add91777 100644 --- a/opcodes/ia64-dis.c +++ b/opcodes/ia64-dis.c @@ -1,5 +1,5 @@ /* ia64-dis.c -- Disassemble ia64 instructions - Copyright (C) 1998, 1999 Free Software Foundation, Inc. + Copyright 1998, 1999, 2000 Free Software Foundation, Inc. Contributed by David Mosberger-Tang This file is part of GDB, GAS, and the GNU binutils. @@ -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); @@ -254,11 +261,13 @@ print_insn_ia64 (bfd_vma memaddr, struct disassemble_info *info) (*info->fprintf_func) (info->stream, ";;"); done: + ia64_free_opcode ((struct ia64_opcode *)idesc); + failed: if (slotnum == 2) retval += 16 - 3*slot_multiplier; return retval; decoding_failed: (*info->fprintf_func) (info->stream, " data8 %#011llx", insn); - goto done; + goto failed; }