-1, -1, -1, -1, -1, -1, -1, -1
};
-#define N32_BIT(n) (1 << (n))
+#define N32_BIT(n) (1u << (n))
#define __MASK(n) (N32_BIT (n) - 1)
#define __MF(v, off, bs) (((v) & __MASK (bs)) << (off))
#define __GF(v, off, bs) (((v) >> off) & __MASK (bs))
-#define __SEXT(v, bs) ((((v) & ((1 << (bs)) - 1)) ^ (1 << ((bs) - 1))) - (1 << ((bs) - 1)))
+#define __SEXT(v, bs) \
+ ((((v) & __MASK ((bs))) ^ N32_BIT ((bs) - 1)) - N32_BIT ((bs) - 1))
/* Make nds32 instructions. */
#define N32_SUB6(insn) (((insn) >> 0) & 0x3f)
#define N32_SWID(insn) (((insn) >> 5) & 0x3ff)
#define N32_IMMU(insn, bs) ((insn) & __MASK (bs))
-#define N32_IMMS(insn, bs) ((signed) __SEXT (((insn) & __MASK (bs)), bs))
+#define N32_IMMS(insn, bs) ((signed) __SEXT ((insn), (bs)))
#define N32_IMM5U(insn) N32_IMMU (insn, 5)
#define N32_IMM12S(insn) N32_IMMS (insn, 12)
#define N32_IMM14S(insn) N32_IMMS (insn, 14)
+2019-12-16 Alan Modra <amodra@gmail.com>
+
+ * nds32-dis.c (print_insn16, print_insn32): Remove forward decls.
+ (struct objdump_disasm_info): Delete.
+ (nds32_parse_audio_ext, nds32_parse_opcode): Cast result of
+ N32_IMMS to unsigned before shifting left.
+
2019-12-16 Alan Modra <amodra@gmail.com>
* moxie-dis.c (INST2OFFSET): Don't left shift a signed value.
extern const field_t operand_fields[];
extern keyword_t *keywords[];
extern const keyword_t keyword_gpr[];
-static void print_insn16 (bfd_vma pc, disassemble_info *info,
- uint32_t insn, uint32_t parse_mode);
-static void print_insn32 (bfd_vma pc, disassemble_info *info, uint32_t insn,
- uint32_t parse_mode);
+
static uint32_t nds32_mask_opcode (uint32_t);
static void nds32_special_opcode (uint32_t, struct nds32_opcode **);
static int get_mapping_symbol_type (struct disassemble_info *, int,
static int is_mapping_symbol (struct disassemble_info *, int,
enum map_type *);
-/* define in objdump.c. */
-struct objdump_disasm_info
-{
- bfd * abfd;
- asection * sec;
- bfd_boolean require_sec;
- arelent ** dynrelbuf;
- long dynrelcount;
- disassembler_ftype disassemble_fn;
- arelent * reloc;
-};
-
/* Hash function for disassemble. */
static htab_t opcode_htab;
if (pfd->hw_res == HW_INT || pfd->hw_res == HW_UINT)
{
if (pfd->hw_res == HW_INT)
- int_value =
- N32_IMMS ((insn >> pfd->bitpos), pfd->bitsize) << pfd->shift;
+ int_value = (unsigned) N32_IMMS (insn >> pfd->bitpos,
+ pfd->bitsize) << pfd->shift;
else
int_value = __GF (insn, pfd->bitpos, pfd->bitsize) << pfd->shift;
else if ((pfd->hw_res == HW_INT) || (pfd->hw_res == HW_UINT))
{
if (pfd->hw_res == HW_INT)
- int_value =
- N32_IMMS ((insn >> pfd->bitpos),
- pfd->bitsize) << pfd->shift;
+ int_value
+ = (unsigned) N32_IMMS (insn >> pfd->bitpos,
+ pfd->bitsize) << pfd->shift;
else
int_value =
__GF (insn, pfd->bitpos, pfd->bitsize) << pfd->shift;
else if ((pfd->hw_res == HW_INT) || (pfd->hw_res == HW_UINT))
{
if (pfd->hw_res == HW_INT)
- int_value =
- N32_IMMS ((insn >> pfd->bitpos), pfd->bitsize) << pfd->shift;
+ int_value = (unsigned) N32_IMMS (insn >> pfd->bitpos,
+ pfd->bitsize) << pfd->shift;
else
int_value =
__GF (insn, pfd->bitpos, pfd->bitsize) << pfd->shift;