X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=opcodes%2Fsh-dis.c;h=126cb5ba992ef4c8a514c013f4f7ae8ad89b3e93;hb=57e5e645010430b3d73f8c6a757d09f48dc8f8d5;hp=76d123334200a7cb350bb5ad272ae25638b2e8c8;hpb=aa820537ead0135a7c38c619039dce8a6fc74ed1;p=deliverable%2Fbinutils-gdb.git diff --git a/opcodes/sh-dis.c b/opcodes/sh-dis.c index 76d1233342..126cb5ba99 100644 --- a/opcodes/sh-dis.c +++ b/opcodes/sh-dis.c @@ -1,6 +1,5 @@ /* Disassemble SH instructions. - Copyright 1993, 1994, 1995, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, - 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 1993-2019 Free Software Foundation, Inc. This file is part of the GNU opcodes library. @@ -19,17 +18,14 @@ Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ -#include #include "sysdep.h" +#include + #define STATIC_TABLE #define DEFINE_TABLE #include "sh-opc.h" -#include "dis-asm.h" - -#ifdef ARCH_all -#define INCLUDE_SHMEDIA -#endif +#include "disassemble.h" static void print_movxy (const sh_opcode_info *op, @@ -152,7 +148,7 @@ print_insn_ddt (int insn, struct disassemble_info *info) while (op->nibbles[2] != (unsigned) ((insn >> 4) & 3) || op->nibbles[3] != (unsigned) (insn & 0xf)) op++; - + print_movxy (op, (4 * ((insn & (is_movy ? 0x200 : 0x100)) == 0) + 2 * is_movy @@ -355,10 +351,10 @@ print_insn_ppi (int field_b, struct disassemble_info *info) print_dsp_reg (field_b & 0xf, fprintf_fn, stream); break; case DSP_REG_X: - fprintf_fn (stream, sx_tab[(field_b >> 6) & 3]); + fprintf_fn (stream, "%s", sx_tab[(field_b >> 6) & 3]); break; case DSP_REG_Y: - fprintf_fn (stream, sy_tab[(field_b >> 4) & 3]); + fprintf_fn (stream, "%s", sy_tab[(field_b >> 4) & 3]); break; case A_MACH: fprintf_fn (stream, "mach"); @@ -404,16 +400,6 @@ print_insn_sh (bfd_vma memaddr, struct disassemble_info *info) && bfd_asymbol_flavour(*info->symbols) == bfd_target_coff_flavour) target_arch = arch_sh4; break; - case bfd_mach_sh5: -#ifdef INCLUDE_SHMEDIA - status = print_insn_sh64 (memaddr, info); - if (status != -2) - return status; -#endif - /* When we get here for sh64, it's because we want to disassemble - SHcompact, i.e. arch_sh4. */ - target_arch = arch_sh4; - break; default: target_arch = sh_get_arch_from_bfd_mach (info->mach); } @@ -836,6 +822,7 @@ print_insn_sh (bfd_vma memaddr, struct disassemble_info *info) fprintf_fn (stream, "xd%d", rn & ~1); break; } + /* Fall through. */ case D_REG_N: fprintf_fn (stream, "dr%d", rn); break; @@ -845,6 +832,7 @@ print_insn_sh (bfd_vma memaddr, struct disassemble_info *info) fprintf_fn (stream, "xd%d", rm & ~1); break; } + /* Fall through. */ case D_REG_M: fprintf_fn (stream, "dr%d", rm); break; @@ -905,6 +893,8 @@ print_insn_sh (bfd_vma memaddr, struct disassemble_info *info) size = 2; else size = 4; + /* Not reading an instruction - disable stop_vma. */ + info->stop_vma = 0; status = info->read_memory_func (disp_pc_addr, bytes, size, info); if (status == 0) {