projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Don't write to inferior_ptid in procfs.c
[deliverable/binutils-gdb.git]
/
opcodes
/
nios2-dis.c
diff --git
a/opcodes/nios2-dis.c
b/opcodes/nios2-dis.c
index 2735aad50b72cedfaed9f419fe6803ce13175d90..6de2079f687a069921084d61078f040f93314b7b 100644
(file)
--- a/
opcodes/nios2-dis.c
+++ b/
opcodes/nios2-dis.c
@@
-1,5
+1,5
@@
/* Altera Nios II disassemble routines
/* Altera Nios II disassemble routines
- Copyright (C) 2012-20
15
Free Software Foundation, Inc.
+ Copyright (C) 2012-20
20
Free Software Foundation, Inc.
Contributed by Nigel Gray (ngray@altera.com).
Contributed by Mentor Graphics, Inc.
Contributed by Nigel Gray (ngray@altera.com).
Contributed by Mentor Graphics, Inc.
@@
-21,7
+21,8
@@
MA 02110-1301, USA. */
#include "sysdep.h"
MA 02110-1301, USA. */
#include "sysdep.h"
-#include "dis-asm.h"
+#include "disassemble.h"
+#include "opintl.h"
#include "opcode/nios2.h"
#include "libiberty.h"
#include <string.h>
#include "opcode/nios2.h"
#include "libiberty.h"
#include <string.h>
@@
-96,7
+97,7
@@
nios2_r2_disassembler_state = {
NULL,
0
};
NULL,
0
};
-
+
/* Function to initialize the opcode hash table. */
static void
nios2_init_opcode_hash (nios2_disassembler_state *state)
/* Function to initialize the opcode hash table. */
static void
nios2_init_opcode_hash (nios2_disassembler_state *state)
@@
-130,9
+131,9
@@
nios2_init_opcode_hash (nios2_disassembler_state *state)
(nios2_opcode_hash *) malloc (sizeof (nios2_opcode_hash));
if (new_hash == NULL)
{
(nios2_opcode_hash *) malloc (sizeof (nios2_opcode_hash));
if (new_hash == NULL)
{
- fprintf (stderr,
-
"error allocating memory...broken disassembler\n"
);
-
abort (
);
+ /* xgettext:c-format */
+
opcodes_error_handler (_("out of memory")
);
+
exit (1
);
}
new_hash->opcode = op;
new_hash->next = NULL;
}
new_hash->opcode = op;
new_hash->next = NULL;
@@
-218,7
+219,7
@@
static struct nios2_reg *
nios2_coprocessor_regs (void)
{
static struct nios2_reg *cached = NULL;
nios2_coprocessor_regs (void)
{
static struct nios2_reg *cached = NULL;
-
+
if (!cached)
{
int i;
if (!cached)
{
int i;
@@
-238,7
+239,7
@@
static struct nios2_reg *
nios2_control_regs (void)
{
static struct nios2_reg *cached = NULL;
nios2_control_regs (void)
{
static struct nios2_reg *cached = NULL;
-
+
if (!cached)
{
int i;
if (!cached)
{
int i;
@@
-257,8
+258,10
@@
nios2_control_regs (void)
static void
bad_opcode (const struct nios2_opcode *op)
{
static void
bad_opcode (const struct nios2_opcode *op)
{
- fprintf (stderr, "Internal error: broken opcode descriptor for `%s %s'\n",
- op->name, op->args);
+ opcodes_error_handler
+ /* xgettext:c-format */
+ (_("internal error: broken opcode descriptor for `%s %s'"),
+ op->name, op->args);
abort ();
}
abort ();
}
@@
-272,6
+275,8
@@
nios2_print_insn_arg (const char *argptr,
const struct nios2_opcode *op)
{
unsigned long i = 0;
const struct nios2_opcode *op)
{
unsigned long i = 0;
+ long s = 0;
+ int32_t o = 0;
struct nios2_reg *reg_base;
switch (*argptr)
struct nios2_reg *reg_base;
switch (*argptr)
@@
-549,15
+554,17
@@
nios2_print_insn_arg (const char *argptr,
switch (op->format)
{
case iw_i_type:
switch (op->format)
{
case iw_i_type:
- i = (signed) (GET_IW_I_IMM16 (opcode) << 16) >> 16;
+ s = ((int32_t) ((GET_IW_I_IMM16 (opcode) & 0xffff) ^ 0x8000)
+ - 0x8000);
break;
case iw_F2I16_type:
break;
case iw_F2I16_type:
- i = (signed) (GET_IW_F2I16_IMM16 (opcode) << 16) >> 16;
+ s = ((int32_t) ((GET_IW_F2I16_IMM16 (opcode) & 0xffff) ^ 0x8000)
+ - 0x8000);
break;
default:
bad_opcode (op);
}
break;
default:
bad_opcode (op);
}
- (*info->fprintf_func) (info->stream, "%ld",
i
);
+ (*info->fprintf_func) (info->stream, "%ld",
s
);
break;
case 'I':
break;
case 'I':
@@
-565,15
+572,17
@@
nios2_print_insn_arg (const char *argptr,
switch (op->format)
{
case iw_F2X4I12_type:
switch (op->format)
{
case iw_F2X4I12_type:
- i = (signed) (GET_IW_F2X4I12_IMM12 (opcode) << 20) >> 20;
+ s = ((int32_t) ((GET_IW_F2X4I12_IMM12 (opcode) & 0xfff) ^ 0x800)
+ - 0x800);
break;
case iw_F1X4I12_type:
break;
case iw_F1X4I12_type:
- i = (signed) (GET_IW_F1X4I12_IMM12 (opcode) << 20) >> 20;
+ s = ((int32_t) ((GET_IW_F1X4I12_IMM12 (opcode) & 0xfff) ^ 0x800)
+ - 0x800);
break;
default:
bad_opcode (op);
}
break;
default:
bad_opcode (op);
}
- (*info->fprintf_func) (info->stream, "%ld",
i
);
+ (*info->fprintf_func) (info->stream, "%ld",
s
);
break;
case 'u':
break;
case 'u':
@@
-668,15
+677,15
@@
nios2_print_insn_arg (const char *argptr,
switch (op->format)
{
case iw_i_type:
switch (op->format)
{
case iw_i_type:
-
i = (signed) (GET_IW_I_IMM16 (opcode) << 16) >> 16
;
+
o = ((GET_IW_I_IMM16 (opcode) & 0xffff) ^ 0x8000) - 0x8000
;
break;
case iw_F2I16_type:
break;
case iw_F2I16_type:
-
i = (signed) (GET_IW_F2I16_IMM16 (opcode) << 16) >> 16
;
+
o = ((GET_IW_F2I16_IMM16 (opcode) & 0xffff) ^ 0x8000) - 0x8000
;
break;
default:
bad_opcode (op);
}
break;
default:
bad_opcode (op);
}
- address = address + 4 +
i
;
+ address = address + 4 +
o
;
(*info->print_address_func) (address, info);
break;
(*info->print_address_func) (address, info);
break;
@@
-685,12
+694,12
@@
nios2_print_insn_arg (const char *argptr,
switch (op->format)
{
case iw_I10_type:
switch (op->format)
{
case iw_I10_type:
-
i = (signed) (GET_IW_I10_IMM10 (opcode) << 22) >> 21
;
+
o = (((GET_IW_I10_IMM10 (opcode) & 0x3ff) ^ 0x400) - 0x400) * 2
;
break;
default:
bad_opcode (op);
}
break;
default:
bad_opcode (op);
}
- address = address + 2 +
i
;
+ address = address + 2 +
o
;
(*info->print_address_func) (address, info);
break;
(*info->print_address_func) (address, info);
break;
@@
-699,12
+708,12
@@
nios2_print_insn_arg (const char *argptr,
switch (op->format)
{
case iw_T1I7_type:
switch (op->format)
{
case iw_T1I7_type:
-
i = (signed) (GET_IW_T1I7_IMM7 (opcode) << 25) >> 24
;
+
o = (((GET_IW_T1I7_IMM7 (opcode) & 0x7f) ^ 0x40) - 0x40) * 2
;
break;
default:
bad_opcode (op);
}
break;
default:
bad_opcode (op);
}
- address = address + 2 +
i
;
+ address = address + 2 +
o
;
(*info->print_address_func) (address, info);
break;
(*info->print_address_func) (address, info);
break;
@@
-853,16
+862,16
@@
nios2_print_insn_arg (const char *argptr,
if (i & (1 << 10))
reglist |= (1 << 28);
if (i & (1 << 11))
if (i & (1 << 10))
reglist |= (1 << 28);
if (i & (1 << 11))
- reglist |= (1 << 31);
+ reglist |= (1
u
<< 31);
}
else
reglist = i << 2;
dir = GET_IW_F1X4L17_REGMASK (opcode) ? 1 : -1;
break;
}
else
reglist = i << 2;
dir = GET_IW_F1X4L17_REGMASK (opcode) ? 1 : -1;
break;
-
+
case iw_L5I4X1_type:
/* Encoding for push.n/pop.n. */
case iw_L5I4X1_type:
/* Encoding for push.n/pop.n. */
- reglist |= (1 << 31);
+ reglist |= (1
u
<< 31);
if (GET_IW_L5I4X1_FP (opcode))
reglist |= (1 << 28);
if (GET_IW_L5I4X1_CS (opcode))
if (GET_IW_L5I4X1_FP (opcode))
reglist |= (1 << 28);
if (GET_IW_L5I4X1_CS (opcode))
@@
-882,7
+891,7
@@
nios2_print_insn_arg (const char *argptr,
for (k = (dir == 1 ? 0 : 31);
(dir == 1 && k < 32) || (dir == -1 && k >= 0);
k += dir)
for (k = (dir == 1 ? 0 : 31);
(dir == 1 && k < 32) || (dir == -1 && k >= 0);
k += dir)
- if (reglist & (1 << k))
+ if (reglist & (1
u
<< k))
{
if (t)
(*info->fprintf_func) (info->stream, ",");
{
if (t)
(*info->fprintf_func) (info->stream, ",");
@@
-903,7
+912,7
@@
nios2_print_insn_arg (const char *argptr,
(*info->fprintf_func) (info->stream, "--");
i = GET_IW_F1X4I12_A (opcode);
(*info->fprintf_func) (info->stream, "--");
i = GET_IW_F1X4I12_A (opcode);
- (*info->fprintf_func) (info->stream, "(%s)",
+ (*info->fprintf_func) (info->stream, "(%s)",
nios2_builtin_regs[i].name);
if (GET_IW_F1X4L17_ID (opcode))
nios2_builtin_regs[i].name);
if (GET_IW_F1X4L17_ID (opcode))
This page took
0.032173 seconds
and
4
git commands to generate.