mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-21 18:39:34 +08:00
Add support for the LMBD (left-most bit detect) instruction to the PRU assembler.
include * opcode/pru.h: Add LMBD (left-most bit detect) opcode index opcodes * pru-opc.c: Add opcode description for LMBD (left-most bit detect) gas * testsuite/gas/pru/misc.s: Add tests for lmbd (left-most bit detect) * testsuite/gas/pru/misc.d: Add tests for lmbd (left-most bit
This commit is contained in:

committed by
Nick Clifton

parent
4a3e3e2282
commit
9372689d72
@ -1,3 +1,9 @@
|
|||||||
|
2020-11-09 Spencer E. Olson <olsonse@umich.edu>
|
||||||
|
|
||||||
|
* testsuite/gas/pru/misc.s: Add tests for lmbd (left-most bit
|
||||||
|
detect).
|
||||||
|
* testsuite/gas/pru/misc.d: Update expected disassembly.
|
||||||
|
|
||||||
2020-11-09 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com>
|
2020-11-09 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com>
|
||||||
|
|
||||||
* config/tc-aarch64.c: Fix comment.
|
* config/tc-aarch64.c: Fix comment.
|
||||||
|
@ -9,3 +9,6 @@ Disassembly of section .text:
|
|||||||
0+0000 <[^>]*> 2a000000 halt
|
0+0000 <[^>]*> 2a000000 halt
|
||||||
0+0004 <[^>]*> 3e800000 slp 1
|
0+0004 <[^>]*> 3e800000 slp 1
|
||||||
0+0008 <[^>]*> 3e000000 slp 0
|
0+0008 <[^>]*> 3e000000 slp 0
|
||||||
|
0+000c <[^>]*> 2701e1e0 lmbd r0, r1, 1
|
||||||
|
0+0010 <[^>]*> 2700e100 lmbd r0.b0, r1, 0
|
||||||
|
0+0014 <[^>]*> 2642e1e0 lmbd r0, r1, sp.b2
|
||||||
|
@ -4,3 +4,6 @@ foo:
|
|||||||
halt
|
halt
|
||||||
slp 1
|
slp 1
|
||||||
slp 0
|
slp 0
|
||||||
|
lmbd r0, r1, 0x1
|
||||||
|
lmbd r0.b0, r1, 0x0
|
||||||
|
lmbd r0, r1, r2.b2
|
||||||
|
24
gas/write.c
24
gas/write.c
@ -771,6 +771,22 @@ resolve_reloc_expr_symbols (void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bfd_boolean
|
||||||
|
is_dwo_section (asection *sec)
|
||||||
|
{
|
||||||
|
const char *name;
|
||||||
|
int len;
|
||||||
|
|
||||||
|
if (sec == NULL || (name = bfd_section_name (sec)) == NULL)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
len = strlen (name);
|
||||||
|
if (len < 5)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
return strncmp (name + len - 4, ".dwo", 4) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* This pass over fixups decides whether symbols can be replaced with
|
/* This pass over fixups decides whether symbols can be replaced with
|
||||||
section symbols. */
|
section symbols. */
|
||||||
|
|
||||||
@ -899,6 +915,14 @@ adjust_reloc_syms (bfd *abfd ATTRIBUTE_UNUSED,
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* PR 26841: DWO sections are not supposed to have relocations. */
|
||||||
|
if (is_dwo_section (sec) && seginfo->fix_root != NULL)
|
||||||
|
{
|
||||||
|
as_bad (_("DWO section '%s' contains unresolved expressions - this is not allowed"),
|
||||||
|
bfd_section_name (sec));
|
||||||
|
seginfo->fix_root = NULL; /* FIXME: Memory leak ? */
|
||||||
|
}
|
||||||
|
|
||||||
dump_section_relocs (abfd, sec, stderr);
|
dump_section_relocs (abfd, sec, stderr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2020-11-09 Spencer E. Olson <olsonse@umich.edu>
|
||||||
|
|
||||||
|
* opcode/pru.h: Add LMBD (left-most bit detect) opcode index.
|
||||||
|
|
||||||
2020-11-09 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com>
|
2020-11-09 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com>
|
||||||
|
|
||||||
* opcode/aarch64.h (enum aarch64_opnd): Add new operand AARCH64_OPND_Rt_LS64.
|
* opcode/aarch64.h (enum aarch64_opnd): Add new operand AARCH64_OPND_Rt_LS64.
|
||||||
|
@ -44,25 +44,27 @@ enum overflow_type
|
|||||||
no_overflow
|
no_overflow
|
||||||
};
|
};
|
||||||
|
|
||||||
enum opcode_format_type {
|
enum opcode_format_type
|
||||||
opcode_format1,
|
{
|
||||||
opcode_format2ab,
|
opcode_format1,
|
||||||
opcode_format2abl,
|
opcode_format2ab,
|
||||||
opcode_format2c,
|
opcode_format2abl,
|
||||||
opcode_format2de,
|
opcode_format2c,
|
||||||
opcode_format45,
|
opcode_format2de,
|
||||||
opcode_format6
|
opcode_format45,
|
||||||
|
opcode_format6
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Opcode ID listing. Used for indexing by the simulator. */
|
/* Opcode ID listing. Used for indexing by the simulator. */
|
||||||
enum pru_instr_type {
|
enum pru_instr_type
|
||||||
prui_add, prui_adc, prui_sub, prui_suc, prui_lsl, prui_lsr, prui_rsb,
|
{
|
||||||
prui_rsc, prui_and, prui_or, prui_xor, prui_min, prui_max, prui_clr,
|
prui_add, prui_adc, prui_sub, prui_suc, prui_lsl, prui_lsr, prui_rsb,
|
||||||
prui_set, prui_not, prui_jmp, prui_jal, prui_ldi, prui_halt, prui_slp,
|
prui_rsc, prui_and, prui_or, prui_xor, prui_min, prui_max, prui_clr,
|
||||||
prui_xin, prui_xout, prui_xchg, prui_sxin, prui_sxout, prui_sxchg,
|
prui_set, prui_not, prui_jmp, prui_jal, prui_ldi, prui_lmbd,
|
||||||
prui_loop, prui_iloop, prui_qbgt, prui_qbge, prui_qblt, prui_qble,
|
prui_halt, prui_slp, prui_xin, prui_xout, prui_xchg, prui_sxin,
|
||||||
prui_qbeq, prui_qbne, prui_qba, prui_qbbs, prui_qbbc, prui_lbbo,
|
prui_sxout, prui_sxchg, prui_loop, prui_iloop, prui_qbgt, prui_qbge,
|
||||||
prui_sbbo, prui_lbco, prui_sbco
|
prui_qblt, prui_qble, prui_qbeq, prui_qbne, prui_qba, prui_qbbs,
|
||||||
|
prui_qbbc, prui_lbbo, prui_sbbo, prui_lbco, prui_sbco
|
||||||
};
|
};
|
||||||
|
|
||||||
/* This structure holds information for a particular instruction.
|
/* This structure holds information for a particular instruction.
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2020-11-09 Spencer E. Olson <olsonse@umich.edu>
|
||||||
|
|
||||||
|
* pru-opc.c: Add opcode description for LMBD (left-most bit
|
||||||
|
detect).
|
||||||
|
|
||||||
2020-11-09 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com>
|
2020-11-09 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com>
|
||||||
|
|
||||||
* aarch64-opc.c: Add ACCDATA_EL1 system register
|
* aarch64-opc.c: Add ACCDATA_EL1 system register
|
||||||
|
@ -121,6 +121,8 @@ const struct pru_opcode pru_opcodes[] =
|
|||||||
OP_MATCH_JAL, OP_MASK_FMT2_OP | OP_MASK_SUBOP, 0, unsigned_immed16_overflow},
|
OP_MATCH_JAL, OP_MASK_FMT2_OP | OP_MASK_SUBOP, 0, unsigned_immed16_overflow},
|
||||||
{ "ldi", prui_ldi, "d,W",
|
{ "ldi", prui_ldi, "d,W",
|
||||||
OP_MATCH_LDI, OP_MASK_FMT2_OP | OP_MASK_SUBOP, 0, unsigned_immed16_overflow},
|
OP_MATCH_LDI, OP_MASK_FMT2_OP | OP_MASK_SUBOP, 0, unsigned_immed16_overflow},
|
||||||
|
{ "lmbd", prui_lmbd, "d,s,b",
|
||||||
|
OP_MATCH_LMBD, OP_MASK_FMT2_OP | OP_MASK_SUBOP, 0, unsigned_immed8_overflow},
|
||||||
{ "halt", prui_halt, "",
|
{ "halt", prui_halt, "",
|
||||||
OP_MATCH_HALT, OP_MASK_FMT2_OP | OP_MASK_SUBOP, 0, no_overflow},
|
OP_MATCH_HALT, OP_MASK_FMT2_OP | OP_MASK_SUBOP, 0, no_overflow},
|
||||||
{ "slp", prui_slp, "w",
|
{ "slp", prui_slp, "w",
|
||||||
|
Reference in New Issue
Block a user