X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=opcodes%2Fia64-dis.c;h=0de6e1d7d5c5cb5c4d26f1613c5df5c746aa8ea8;hb=da8d7d665521e5b3f67f87341400441a5d0643d5;hp=45910e9393e885d95f02a58c494ca15d934422fe;hpb=4f8631b1d4f2b34021d2e4827a3d392684f3243d;p=deliverable%2Fbinutils-gdb.git diff --git a/opcodes/ia64-dis.c b/opcodes/ia64-dis.c index 45910e9393..0de6e1d7d5 100644 --- a/opcodes/ia64-dis.c +++ b/opcodes/ia64-dis.c @@ -1,5 +1,5 @@ /* ia64-dis.c -- Disassemble ia64 instructions - Copyright 1998, 1999, 2000, 2002, 2007 Free Software Foundation, Inc. + Copyright (C) 1998-2016 Free Software Foundation, Inc. Contributed by David Mosberger-Tang This file is part of the GNU opcodes library. @@ -19,8 +19,8 @@ Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ +#include "sysdep.h" #include -#include #include "dis-asm.h" #include "opcode/ia64.h" @@ -68,7 +68,7 @@ unit_to_type (ia64_insn opcode, enum ia64_unit unit) int print_insn_ia64 (bfd_vma memaddr, struct disassemble_info *info) { - ia64_insn t0, t1, slot[3], template, s_bit, insn; + ia64_insn t0, t1, slot[3], template_val, s_bit, insn; int slotnum, j, status, need_comma, retval, slot_multiplier; const struct ia64_operand *odesc; const struct ia64_opcode *idesc; @@ -100,20 +100,20 @@ print_insn_ia64 (bfd_vma memaddr, struct disassemble_info *info) t0 = bfd_getl64 (bundle); t1 = bfd_getl64 (bundle + 8); s_bit = t0 & 1; - template = (t0 >> 1) & 0xf; + template_val = (t0 >> 1) & 0xf; slot[0] = (t0 >> 5) & 0x1ffffffffffLL; slot[1] = ((t0 >> 46) & 0x3ffff) | ((t1 & 0x7fffff) << 18); slot[2] = (t1 >> 23) & 0x1ffffffffffLL; - tname = ia64_templ_desc[template].name; + tname = ia64_templ_desc[template_val].name; if (slotnum == 0) (*info->fprintf_func) (info->stream, "[%s] ", tname); else (*info->fprintf_func) (info->stream, " "); - unit = ia64_templ_desc[template].exec_unit[slotnum]; + unit = ia64_templ_desc[template_val].exec_unit[slotnum]; - if (template == 2 && slotnum == 1) + if (template_val == 2 && slotnum == 1) { /* skip L slot in MLI template: */ slotnum = 2; @@ -182,7 +182,7 @@ print_insn_ia64 (bfd_vma memaddr, struct disassemble_info *info) } } - switch (odesc->class) + switch (odesc->op_class) { case IA64_OPND_CLASS_CST: (*info->fprintf_func) (info->stream, "%s", odesc->str); @@ -201,6 +201,14 @@ print_insn_ia64 (bfd_vma memaddr, struct disassemble_info *info) case 17: strcpy (regname, "ar.bsp"); break; case 18: strcpy (regname, "ar.bspstore"); break; case 19: strcpy (regname, "ar.rnat"); break; + case 21: strcpy (regname, "ar.fcr"); break; + case 24: strcpy (regname, "ar.eflag"); break; + case 25: strcpy (regname, "ar.csd"); break; + case 26: strcpy (regname, "ar.ssd"); break; + case 27: strcpy (regname, "ar.cflg"); break; + case 28: strcpy (regname, "ar.fsr"); break; + case 29: strcpy (regname, "ar.fir"); break; + case 30: strcpy (regname, "ar.fdr"); break; case 32: strcpy (regname, "ar.ccv"); break; case 36: strcpy (regname, "ar.unat"); break; case 40: strcpy (regname, "ar.fpsr"); break; @@ -232,6 +240,8 @@ print_insn_ia64 (bfd_vma memaddr, struct disassemble_info *info) case 23: strcpy (regname, "cr.ifs"); break; case 24: strcpy (regname, "cr.iim"); break; case 25: strcpy (regname, "cr.iha"); break; + case 26: strcpy (regname, "cr.iib0"); break; + case 27: strcpy (regname, "cr.iib1"); break; case 64: strcpy (regname, "cr.lid"); break; case 65: strcpy (regname, "cr.ivr"); break; case 66: strcpy (regname, "cr.tpr"); break; @@ -293,7 +303,7 @@ print_insn_ia64 (bfd_vma memaddr, struct disassemble_info *info) need_comma = 0; } } - if (slotnum + 1 == ia64_templ_desc[template].group_boundary + if (slotnum + 1 == ia64_templ_desc[template_val].group_boundary || ((slotnum == 2) && s_bit)) (*info->fprintf_func) (info->stream, ";;");