/* i370-dis.c -- Disassemble Instruction 370 (ESA/390) instructions
- Copyright 1994, 2000, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1994-2014 Free Software Foundation, Inc.
PowerPC version written by Ian Lance Taylor, Cygnus Support
Rewritten for i370 ESA/390 support by Linas Vepstas <linas@linas.org>
-This file is part of GDB, GAS, and the GNU binutils.
+ This file is part of the GNU opcodes library.
-GDB, GAS, and the GNU binutils are free software; you can redistribute
-them and/or modify them under the terms of the GNU General Public
-License as published by the Free Software Foundation; either version
-2, or (at your option) any later version.
+ This library is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
-GDB, GAS, and the GNU binutils are distributed in the hope that they
-will be useful, but WITHOUT ANY WARRANTY; without even the implied
-warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
-the GNU General Public License for more details.
+ It is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
-You should have received a copy of the GNU General Public License
-along with this file; see the file COPYING. If not, write to the Free
-Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU General Public License
+ along with this file; see the file COPYING. If not, write to the Free
+ Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
-#include <stdio.h>
#include "sysdep.h"
+#include <stdio.h>
#include "dis-asm.h"
#include "opcode/i370.h"
/* This file provides several disassembler functions, all of which use
- the disassembler interface defined in dis-asm.h.
-*/
+ the disassembler interface defined in dis-asm.h. */
int
print_insn_i370 (bfd_vma memaddr, struct disassemble_info *info)
return -1;
}
- /* Cast the bytes into the insn (in a host-endian indep way) */
+ /* Cast the bytes into the insn (in a host-endian indep way). */
insn.i[0] = (buffer[0] << 24) & 0xff000000;
insn.i[0] |= (buffer[1] << 16) & 0xff0000;
insn.i[0] |= (buffer[2] << 8) & 0xff00;
masked.i[0] &= 0xffff;
}
masked.i[0] &= opcode->mask.i[0];
- if (masked.i[0] != opcode->opcode.i[0]) continue;
+ if (masked.i[0] != opcode->opcode.i[0])
+ continue;
if (6 == opcode->len)
{
masked.i[1] &= opcode->mask.i[1];
- if (masked.i[1] != opcode->opcode.i[1]) continue;
+ if (masked.i[1] != opcode->opcode.i[1])
+ continue;
}
- /* Found a match. adjust a tad */
+ /* Found a match. adjust a tad. */
if (2 == opcode->len)
{
insn.i[0] >>= 16;
if (operand->extract)
(*operand->extract) (insn, &invalid);
}
- if (invalid) continue;
+ if (invalid)
+ continue;
/* The instruction is valid. */
(*info->fprintf_func) (info->stream, "%s", opcode->name);
if (operand->extract)
value = (*operand->extract) (insn, (int *) NULL);
else
- {
- value = (insn.i[0] >> operand->shift) & ((1 << operand->bits) - 1);
- }
+ value = (insn.i[0] >> operand->shift) & ((1 << operand->bits) - 1);
/* Print the operand as directed by the flags. */
if ((operand->flags & I370_OPERAND_OPTIONAL) != 0)
(*info->fprintf_func) (info->stream, "%ld", value);
else
(*info->fprintf_func) (info->stream, " %ld, ", value);
-
}
return opcode->len;
-
}
-
/* We could not find a match. */
(*info->fprintf_func) (info->stream, ".short 0x%02x%02x", buffer[0], buffer[1]);