projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
x86: correct VFPCLASSP{S,D} operand size handling
[deliverable/binutils-gdb.git]
/
opcodes
/
d30v-dis.c
diff --git
a/opcodes/d30v-dis.c
b/opcodes/d30v-dis.c
index d2e0caa39d73372ac1ab57fa20beaed9fb5049c9..ba43731122d80f24995261377e7ba7763d69817f 100644
(file)
--- a/
opcodes/d30v-dis.c
+++ b/
opcodes/d30v-dis.c
@@
-1,5
+1,5
@@
/* Disassemble D30V instructions.
/* Disassemble D30V instructions.
- Copyright (C) 1997-20
19
Free Software Foundation, Inc.
+ Copyright (C) 1997-20
20
Free Software Foundation, Inc.
This file is part of the GNU opcodes library.
This file is part of the GNU opcodes library.
@@
-90,11
+90,11
@@
lookup_opcode (struct d30v_insn *insn, long num, int is_long)
}
static int
}
static int
-extract_value (
long long num,
struct d30v_operand *oper, int is_long)
+extract_value (
uint64_t num, const
struct d30v_operand *oper, int is_long)
{
{
- int val;
+
unsigned
int val;
int shift = 12 - oper->position;
int shift = 12 - oper->position;
- int mask = (0xFFFFFFFF >> (32 - oper->bits));
+
unsigned
int mask = (0xFFFFFFFF >> (32 - oper->bits));
if (is_long)
{
if (is_long)
{
@@
-118,14
+118,14
@@
extract_value (long long num, struct d30v_operand *oper, int is_long)
static void
print_insn (struct disassemble_info *info,
bfd_vma memaddr,
static void
print_insn (struct disassemble_info *info,
bfd_vma memaddr,
-
long long
num,
+
uint64_t
num,
struct d30v_insn *insn,
int is_long,
int show_ext)
{
struct d30v_insn *insn,
int is_long,
int show_ext)
{
-
int val, opnum, need_comma = 0
;
- struct d30v_operand *oper;
- int i, match, need_paren = 0, found_control = 0;
+
unsigned int val, opnum
;
+
const
struct d30v_operand *oper;
+ int i, match, need_
comma = 0, need_
paren = 0, found_control = 0;
unsigned int opind = 0;
(*info->fprintf_func) (info->stream, "%s", insn->op->name);
unsigned int opind = 0;
(*info->fprintf_func) (info->stream, "%s", insn->op->name);
@@
-136,7
+136,7
@@
print_insn (struct disassemble_info *info,
opind++;
val =
extract_value (num,
opind++;
val =
extract_value (num,
-
(struct d30v_operand *)
&d30v_operand_table[insn->form->operands[0]],
+ &d30v_operand_table[insn->form->operands[0]],
is_long);
(*info->fprintf_func) (info->stream, "%s", d30v_cc_names[val]);
}
is_long);
(*info->fprintf_func) (info->stream, "%s", d30v_cc_names[val]);
}
@@
-160,7
+160,7
@@
print_insn (struct disassemble_info *info,
{
int bits;
{
int bits;
- oper =
(struct d30v_operand *)
&d30v_operand_table[opnum];
+ oper = &d30v_operand_table[opnum];
bits = oper->bits;
if (oper->flags & OPERAND_SHIFT)
bits += 3;
bits = oper->bits;
if (oper->flags & OPERAND_SHIFT)
bits += 3;
@@
-210,8
+210,8
@@
print_insn (struct disassemble_info *info,
match = 0;
if (oper->flags & OPERAND_CONTROL)
{
match = 0;
if (oper->flags & OPERAND_CONTROL)
{
- struct d30v_operand *oper3 =
-
(struct d30v_operand *)
&d30v_operand_table[insn->form->operands[2]];
+ const struct d30v_operand *oper3
+
=
&d30v_operand_table[insn->form->operands[2]];
int id = extract_value (num, oper3, is_long);
found_control = 1;
int id = extract_value (num, oper3, is_long);
found_control = 1;
@@
-271,14
+271,10
@@
print_insn (struct disassemble_info *info,
/* IMM6S3 is unsigned. */
if (oper->flags & OPERAND_SIGNED || bits == 32)
{
/* IMM6S3 is unsigned. */
if (oper->flags & OPERAND_SIGNED || bits == 32)
{
- long max;
- max = (1 << (bits - 1));
- if (val & max)
+ unsigned int sign = 1u << (bits - 1);
+ if (val & sign)
{
{
- if (bits == 32)
- val = -val;
- else
- val = -val & ((1 << bits) - 1);
+ val = -val & (sign + sign - 1);
neg = 1;
}
}
neg = 1;
}
}
@@
-303,13
+299,11
@@
print_insn (struct disassemble_info *info,
{
if (oper->flags & OPERAND_SIGNED)
{
{
if (oper->flags & OPERAND_SIGNED)
{
-
int max = (1 << (bits - 1)
);
+
unsigned int sign = 1u << (bits - 1
);
- if (val &
max
)
+ if (val &
sign
)
{
{
- val = -val;
- if (bits < 32)
- val &= ((1 << bits) - 1);
+ val = -val & (sign + sign - 1);
(*info->fprintf_func) (info->stream, "-");
}
}
(*info->fprintf_func) (info->stream, "-");
}
}
@@
-330,9
+324,9
@@
print_insn_d30v (bfd_vma memaddr, struct disassemble_info *info)
{
int status, result;
bfd_byte buffer[12];
{
int status, result;
bfd_byte buffer[12];
- u
nsigned long
in1, in2;
+ u
int32_t
in1, in2;
struct d30v_insn insn;
struct d30v_insn insn;
-
long long
num;
+
uint64_t
num;
insn.form = NULL;
insn.form = NULL;
@@
-353,9
+347,9
@@
print_insn_d30v (bfd_vma memaddr, struct disassemble_info *info)
{
info->bytes_per_line = 8;
if (!(result = lookup_opcode (&insn, in1, 0)))
{
info->bytes_per_line = 8;
if (!(result = lookup_opcode (&insn, in1, 0)))
- (*info->fprintf_func) (info->stream, ".long\t0x%
l
x", in1);
+ (*info->fprintf_func) (info->stream, ".long\t0x%x", in1);
else
else
- print_insn (info, memaddr, (
long long
) in1, &insn, 0, result);
+ print_insn (info, memaddr, (
uint64_t
) in1, &insn, 0, result);
return 4;
}
in2 = bfd_getb32 (buffer);
return 4;
}
in2 = bfd_getb32 (buffer);
@@
-365,17
+359,17
@@
print_insn_d30v (bfd_vma memaddr, struct disassemble_info *info)
/* LONG instruction. */
if (!(result = lookup_opcode (&insn, in1, 1)))
{
/* LONG instruction. */
if (!(result = lookup_opcode (&insn, in1, 1)))
{
- (*info->fprintf_func) (info->stream, ".long\t0x%
lx,0x%l
x", in1, in2);
+ (*info->fprintf_func) (info->stream, ".long\t0x%
x,0x%
x", in1, in2);
return 8;
}
return 8;
}
- num = (
long long
) in1 << 32 | in2;
+ num = (
uint64_t
) in1 << 32 | in2;
print_insn (info, memaddr, num, &insn, 1, result);
}
else
{
num = in1;
if (!(result = lookup_opcode (&insn, in1, 0)))
print_insn (info, memaddr, num, &insn, 1, result);
}
else
{
num = in1;
if (!(result = lookup_opcode (&insn, in1, 0)))
- (*info->fprintf_func) (info->stream, ".long\t0x%
l
x", in1);
+ (*info->fprintf_func) (info->stream, ".long\t0x%x", in1);
else
print_insn (info, memaddr, num, &insn, 0, result);
else
print_insn (info, memaddr, num, &insn, 0, result);
@@
-396,7
+390,7
@@
print_insn_d30v (bfd_vma memaddr, struct disassemble_info *info)
insn.form = NULL;
num = in2;
if (!(result = lookup_opcode (&insn, in2, 0)))
insn.form = NULL;
num = in2;
if (!(result = lookup_opcode (&insn, in2, 0)))
- (*info->fprintf_func) (info->stream, ".long\t0x%
l
x", in2);
+ (*info->fprintf_func) (info->stream, ".long\t0x%x", in2);
else
print_insn (info, memaddr, num, &insn, 0, result);
}
else
print_insn (info, memaddr, num, &insn, 0, result);
}
This page took
0.027696 seconds
and
4
git commands to generate.