/* Instruction printing code for the ARC.
- Copyright (C) 1994-2020 Free Software Foundation, Inc.
+ Copyright (C) 1994-2021 Free Software Foundation, Inc.
Contributed by Claudiu Zissulescu (claziss@synopsys.com)
struct arc_operand_iterator * iter)
{
const struct arc_opcode *opcode = NULL;
- bfd_boolean needs_limm;
+ bfd_boolean needs_limm = FALSE;
const extInstruction_t *einsn, *i;
unsigned limm = 0;
struct arc_disassemble_info *arc_infop = info->private_data;
if (opcode == NULL)
{
(*info->fprintf_func) (info->stream,
- _("An error occured while generating the "
+ _("An error occurred while generating the "
"extension instruction operations"));
*opcode_result = NULL;
return FALSE;
/* Update private data. */
arc_infop->opcode = opcode;
- arc_infop->limm = (needs_limm) ? limm : 0;
+ arc_infop->limm = limm;
arc_infop->limm_p = needs_limm;
return TRUE;
if (!rname)
rname = regnames[value];
(*info->fprintf_func) (info->stream, "%s", rname);
+
+ /* Check if we have a double register to print. */
if (operand->flags & ARC_OPERAND_TRUNCATE)
{
- rname = arcExtMap_coreRegName (value + 1);
- if (!rname)
- rname = regnames[value + 1];
+ if ((value & 0x01) == 0)
+ {
+ rname = arcExtMap_coreRegName (value + 1);
+ if (!rname)
+ rname = regnames[value + 1];
+ }
+ else
+ rname = _("\nWarning: illegal use of double register "
+ "pair.\n");
(*info->fprintf_func) (info->stream, "%s", rname);
}
if (value == 63)