/* Disassembler for the PA-RISC. Somewhat derived from sparc-pinsn.c.
- Copyright 1989, 1990, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001, 2003,
- 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1989-2020 Free Software Foundation, Inc.
Contributed by the Center for Software Science at the
University of Utah (pa-gdb-bugs@cs.utah.edu).
MA 02110-1301, USA. */
#include "sysdep.h"
-#include "dis-asm.h"
+#include "disassemble.h"
#include "libhppa.h"
#include "opcode/hppa.h"
};
static const char *const compare_cond_64_names[] =
{
- "", ",*=", ",*<", ",*<=", ",*<<", ",*<<=", ",*sv", ",*od",
+ ",*", ",*=", ",*<", ",*<=", ",*<<", ",*<<=", ",*sv", ",*od",
",*tr", ",*<>", ",*>=", ",*>", ",*>>=", ",*>>", ",*nsv", ",*ev"
};
static const char *const cmpib_cond_64_names[] =
};
static const char *const add_cond_64_names[] =
{
- "", ",*=", ",*<", ",*<=", ",*nuv", ",*znv", ",*sv", ",*od",
+ ",*", ",*=", ",*<", ",*<=", ",*nuv", ",*znv", ",*sv", ",*od",
",*tr", ",*<>", ",*>=", ",*>", ",*uv", ",*vnz", ",*nsv", ",*ev"
};
static const char *const wide_add_cond_names[] =
",tr", ",<>", ",>=", ",>", 0, 0, 0, ",ev"};
static const char *const logical_cond_64_names[] =
{
- "", ",*=", ",*<", ",*<=", 0, 0, 0, ",*od",
+ ",*", ",*=", ",*<", ",*<=", 0, 0, 0, ",*od",
",*tr", ",*<>", ",*>=", ",*>", 0, 0, 0, ",*ev"};
static const char *const unit_cond_names[] =
{
};
static const char *const unit_cond_64_names[] =
{
- "", ",*swz", ",*sbz", ",*shz", ",*sdc", ",*swc", ",*sbc", ",*shc",
+ ",*", ",*swz", ",*sbz", ",*shz", ",*sdc", ",*swc", ",*sbc", ",*shc",
",*tr", ",*nwz", ",*nbz", ",*nhz", ",*ndc", ",*nwc", ",*nbc", ",*nhc"
};
static const char *const shift_cond_names[] =
};
static const char *const shift_cond_64_names[] =
{
- "", ",*=", ",*<", ",*od", ",*tr", ",*<>", ",*>=", ",*ev"
+ ",*", ",*=", ",*<", ",*od", ",*tr", ",*<>", ",*>=", ",*ev"
};
static const char *const bb_cond_64_names[] =
{
static void
fput_reg (unsigned reg, disassemble_info *info)
{
- (*info->fprintf_func) (info->stream, reg ? reg_names[reg] : "r0");
+ (*info->fprintf_func) (info->stream, "%s", reg ? reg_names[reg] : "r0");
}
static void
fput_fp_reg (unsigned reg, disassemble_info *info)
{
- (*info->fprintf_func) (info->stream, reg ? fp_reg_names[reg] : "fr0");
+ (*info->fprintf_func) (info->stream, "%s", reg ? fp_reg_names[reg] : "fr0");
}
static void
static void
fput_creg (unsigned reg, disassemble_info *info)
{
- (*info->fprintf_func) (info->stream, control_reg[reg]);
+ (*info->fprintf_func) (info->stream, "%s", control_reg[reg]);
}
/* Print constants with sign. */
fput_const (unsigned num, disassemble_info *info)
{
if ((int) num < 0)
- (*info->fprintf_func) (info->stream, "-%x", - (int) num);
+ (*info->fprintf_func) (info->stream, "-%x", -num);
else
(*info->fprintf_func) (info->stream, "%x", num);
}
static int
extract_16 (unsigned word)
{
- int m15, m0, m1;
+ unsigned m15, m0, m1;
m0 = GET_BIT (word, 16);
m1 = GET_BIT (word, 17);
static int
extract_21 (unsigned word)
{
- int val;
+ unsigned val;
word &= MASK_21;
word <<= 11;
fput_fp_reg (GET_FIELD (insn, 6, 10), info);
break;
- /* 'fA' will not generate a space before the regsiter
+ /* 'fA' will not generate a space before the register
name. Normally that is fine. Except that it
causes problems with xmpyu which has no FP format
completer. */
case '#':
{
- int sign = GET_FIELD (insn, 31, 31);
- int imm10 = GET_FIELD (insn, 18, 27);
- int disp;
+ unsigned sign = GET_FIELD (insn, 31, 31);
+ unsigned imm10 = GET_FIELD (insn, 18, 27);
+ unsigned disp;
if (sign)
- disp = (-1 << 10) | imm10;
+ disp = (-1U << 10) | imm10;
else
disp = imm10;
case 'K':
case 'd':
{
- int sign = GET_FIELD (insn, 31, 31);
- int imm11 = GET_FIELD (insn, 18, 28);
- int disp;
+ unsigned sign = GET_FIELD (insn, 31, 31);
+ unsigned imm11 = GET_FIELD (insn, 18, 28);
+ unsigned disp;
if (sign)
- disp = (-1 << 11) | imm11;
+ disp = (-1U << 11) | imm11;
else
disp = imm11;