This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH 2/2] [ARC] Update disassembler opcode selection
- From: Claudiu Zissulescu <Claudiu dot Zissulescu at synopsys dot com>
- To: "binutils at sourceware dot org" <binutils at sourceware dot org>
- Cc: Francois Bedard <Francois dot Bedard at synopsys dot com>
- Date: Wed, 24 Jul 2019 14:27:55 +0000
- Subject: Re: [PATCH 2/2] [ARC] Update disassembler opcode selection
- Arc-authentication-results: i=1; mx.microsoft.com 1;spf=pass smtp.mailfrom=synopsys.com;dmarc=pass action=none header.from=synopsys.com;dkim=pass header.d=synopsys.com;arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pjc6z3dQQTAfgm5p+PRLh3uhMcWiIARLcJvE47+Jvc4=; b=Bncy4D/M94gzoNxd0S1BoZuNStcGEn2cPMYe5bLIqA35lLwqIGvXVLr4L+/2WImbSKGGXNQzx+UnjizZdaLstk4nmMwUIkOLBxo3PkCzEpXI0Pmmi2WRQxgbpkKqYXB7+p3FPgj4HrH/9BlLBcWAZ9Xh728xvGOdugP/GgunE9ZGXnNoKJqiAUYYwTfiX9+PxYNHv+X4kOMRyABX8vhak7GmiOrpOgwfLepngQI00/4XBiS2HY25do2i2/80YZOesUPXcctO9oPnvz+GuSicvicsBvITmlTe2bX1KYsM4KR33Kjlfl60d3Q/1sydsZCgL8RRJAPCVEkfm3roKjyCdg==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ib93yvQhft18H2U0kPMJE9U49WzU/90cXiZ+enBeLGiQnhr9JWOyvmO2FOJiVb+Cu+N74BvDiwn30rVuFbDkXj5YuEileBeX2QdwkzSLGqjglyqQg1QWgVr2TbJ/84xyw055zP/KupuJSwFkc0RqqLtBedrzOMWOy4OEPLBYx2fKxWDE4D4bIbg/K7XiNCPxtV4J0bHRC+H01VrzFWQHkRFv8L+DxsFWIL8iwH2N1bmTFQDHfoh8eCwvzgCRi3lFihs3nutLBKPFIMnCEUHaVpq5e0lJTz+m8+Y3EL7kB5ij399Ulvhhi+YyqrXO4UuQO7rvx2mKn6vUbH3ibhYR7g==
- References: <20190724135259.30063-1-claziss@gmail.com> <20190724135259.30063-2-claziss@gmail.com>
These two patches are already pushed. Sorry for not adding the COMMIT in the
subject.
Best,
Claudiu
On Wed, 2019-07-24 at 16:52 +0300, Claudiu Zissulescu wrote:
> New instruction are added, and some of them are overlapping. Update
> disassembler to correctly recognize them. Introduce nps400 option.
>
> opcodes/
> xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com>
>
> * arc-dis.c (skip_this_opcode): Check also for 0x07 major opcodes,
> and MPY class instructions.
> (parse_option): Add nps400 option.
> (print_arc_disassembler_options): Add nps400 info.
>
> gas/
> xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com>
>
> * testsuite/gas/arc/nps400-6.d: Update test.
> ---
> gas/ChangeLog | 4 ++++
> gas/testsuite/gas/arc/nps400-6.d | 2 +-
> opcodes/ChangeLog | 7 +++++++
> opcodes/arc-dis.c | 24 +++++++++++++++++++++++-
> 4 files changed, 35 insertions(+), 2 deletions(-)
>
> diff --git a/gas/ChangeLog b/gas/ChangeLog
> index c08ccbc9b6..ab519fa403 100644
> --- a/gas/ChangeLog
> +++ b/gas/ChangeLog
> @@ -1,3 +1,7 @@
> +2019-07-24 Claudiu Zissulescu <claziss@synopsys.com>
> +
> + * testsuite/gas/arc/nps400-6.d: Update test.
> +
> 2019-07-24 Alan Modra <amodra@gmail.com>
>
> * config/obj-elf.c (obj_elf_section, obj_elf_type): Set has_gnu_osabi.
> diff --git a/gas/testsuite/gas/arc/nps400-6.d b/gas/testsuite/gas/arc/nps400-
> 6.d
> index 3adf756130..95344082bf 100644
> --- a/gas/testsuite/gas/arc/nps400-6.d
> +++ b/gas/testsuite/gas/arc/nps400-6.d
> @@ -1,5 +1,5 @@
> #as: -mcpu=arc700 -mnps400
> -#objdump: -dr
> +#objdump: -dr -Mnps400
>
> .*: +file format .*arc.*
>
> diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
> index e0e6bdb4d9..ba0be86704 100644
> --- a/opcodes/ChangeLog
> +++ b/opcodes/ChangeLog
> @@ -1,3 +1,10 @@
> +2019-07-24 Claudiu Zissulescu <claziss@synopsys.com>
> +
> + * arc-dis.c (skip_this_opcode): Check also for 0x07 major opcodes,
> + and MPY class instructions.
> + (parse_option): Add nps400 option.
> + (print_arc_disassembler_options): Add nps400 info.
> +
> 2019-07-24 Claudiu Zissulescu <claziss@synopsys.com>
>
> * arc-ext-tbl.h (bspeek): Remove it, added to main table.
> diff --git a/opcodes/arc-dis.c b/opcodes/arc-dis.c
> index ee598918c5..8207c05519 100644
> --- a/opcodes/arc-dis.c
> +++ b/opcodes/arc-dis.c
> @@ -181,7 +181,9 @@ skip_this_opcode (const struct arc_opcode *opcode)
>
> /* Check opcode for major 0x06, return if it is not in. */
> if (arc_opcode_len (opcode) == 4
> - && OPCODE_32BIT_INSN (opcode->opcode) != 0x06)
> + && (OPCODE_32BIT_INSN (opcode->opcode) != 0x06
> + /* Can be an APEX extensions. */
> + && OPCODE_32BIT_INSN (opcode->opcode) != 0x07))
> return FALSE;
>
> /* or not a known truble class. */
> @@ -190,6 +192,7 @@ skip_this_opcode (const struct arc_opcode *opcode)
> case FLOAT:
> case DSP:
> case ARITH:
> + case MPY:
> break;
> default:
> return FALSE;
> @@ -764,6 +767,23 @@ parse_option (const char *option)
> else if (disassembler_options_cmp (option, "fpuda") == 0)
> add_to_decodelist (FLOAT, DPA);
>
> + else if (disassembler_options_cmp (option, "nps400") == 0)
> + {
> + add_to_decodelist (ACL, NPS400);
> + add_to_decodelist (ARITH, NPS400);
> + add_to_decodelist (BITOP, NPS400);
> + add_to_decodelist (BMU, NPS400);
> + add_to_decodelist (CONTROL, NPS400);
> + add_to_decodelist (DMA, NPS400);
> + add_to_decodelist (DPI, NPS400);
> + add_to_decodelist (MEMORY, NPS400);
> + add_to_decodelist (MISC, NPS400);
> + add_to_decodelist (NET, NPS400);
> + add_to_decodelist (PMU, NPS400);
> + add_to_decodelist (PROTOCOL_DECODE, NPS400);
> + add_to_decodelist (ULTRAIP, NPS400);
> + }
> +
> else if (disassembler_options_cmp (option, "fpus") == 0)
> {
> add_to_decodelist (FLOAT, SP);
> @@ -1411,6 +1431,8 @@ with -M switch (multiple options should be separated by
> commas):\n"));
> fprintf (stream, _("\
> fpud Recognize double precision FPU instructions.\n"));
> fprintf (stream, _("\
> + nps400 Recognize NPS400 instructions.\n"));
> + fprintf (stream, _("\
> hex Use only hexadecimal number to print immediates.\n"));
> }
>