bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug binutils/21446] Incorrect disassembly for msr to dbgdtrtx_el0 in AA


From: cvs-commit at gcc dot gnu.org
Subject: [Bug binutils/21446] Incorrect disassembly for msr to dbgdtrtx_el0 in AArch64
Date: Tue, 15 May 2018 16:22:13 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=21446

--- Comment #4 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot 
gnu.org> ---
The master branch has been updated by Tamar Christina
<address@hidden>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=f9830ec1655e7cc2aa88c9c34a20503978d9dc88

commit f9830ec1655e7cc2aa88c9c34a20503978d9dc88
Author: Tamar Christina <address@hidden>
Date:   Tue May 15 16:37:20 2018 +0100

    Implement Read/Write constraints on system registers on AArch64

    This patch adds constraints for read and write only system registers with
the
    msr and mrs instructions.  The code will treat having both flags set and
none
    set as the same.  These flags add constraints that must be matched up. e.g.
a
    system register with a READ only flag set, can only be used with mrs.  If
The
    constraint fails a warning is emitted.

    Examples of the warnings generated:

    test.s: Assembler messages:
    test.s:5: Warning: specified register cannot be written to at operand 1 --
`msr dbgdtrrx_el0,x3'
    test.s:7: Warning: specified register cannot be read from at operand 2 --
`mrs x3,dbgdtrtx_el0'
    test.s:8: Warning: specified register cannot be written to at operand 1 --
`msr midr_el1,x3'

    and disassembly notes:

    0000000000000000 <main>:
       0:       d5130503        msr     dbgdtrtx_el0, x3
       4:       d5130503        msr     dbgdtrtx_el0, x3
       8:       d5330503        mrs     x3, dbgdtrrx_el0
       c:       d5330503        mrs     x3, dbgdtrrx_el0
      10:       d5180003        msr     midr_el1, x3    ; note: writing to a
read-only register.

    Note that because dbgdtrrx_el0 and dbgdtrtx_el0 have the same encoding,
during
    disassembly the constraints are use to disambiguate between the two.  An
exact
    constraint match is always prefered over partial ones if available.

    As always the warnings can be suppressed with -w and also be made errors
using
    warnings as errors.

    binutils/

        PR binutils/21446
        * doc/binutils.texi (-M): Document AArch64 options.

    gas/

        PR binutils/21446
        * testsuite/gas/aarch64/illegal-sysreg-2.s: Fix pmbidr_el1 test.
        * testsuite/gas/aarch64/illegal-sysreg-2.l: Likewise.
        * testsuite/gas/aarch64/illegal-sysreg-2.d: Likewise.
        * testsuite/gas/aarch64/sysreg-diagnostic.s: New.
        * testsuite/gas/aarch64/sysreg-diagnostic.l: New.
        * testsuite/gas/aarch64/sysreg-diagnostic.d: New.

    include/

        PR binutils/21446
        * opcode/aarch64.h (F_SYS_READ, F_SYS_WRITE): New.

    opcodes/

        PR binutils/21446
        * aarch64-asm.c (opintl.h): Include.
        (aarch64_ins_sysreg): Enforce read/write constraints.
        * aarch64-dis.c (aarch64_ext_sysreg): Likewise.
        * aarch64-opc.h (F_DEPRECATED, F_ARCHEXT, F_HASXT): Moved here.
        (F_REG_READ, F_REG_WRITE): New.
        * aarch64-opc.c (aarch64_print_operand): Generate notes for
        AARCH64_OPND_SYSREG.
        (F_DEPRECATED, F_ARCHEXT, F_HASXT): Move to aarch64-opc.h.
        (aarch64_sys_regs): Add constraints to currentel, midr_el1, ctr_el0,
        mpidr_el1, revidr_el1, aidr_el1, dczid_el0, id_dfr0_el1, id_pfr0_el1,
        id_pfr1_el1, id_afr0_el1, id_mmfr0_el1, id_mmfr1_el1, id_mmfr2_el1,
        id_mmfr3_el1, id_mmfr4_el1, id_isar0_el1, id_isar1_el1, id_isar2_el1,
        id_isar3_el1, id_isar4_el1, id_isar5_el1, mvfr0_el1, mvfr1_el1,
        mvfr2_el1, ccsidr_el1, id_aa64pfr0_el1, id_aa64pfr1_el1,
        id_aa64dfr0_el1, id_aa64dfr1_el1, id_aa64isar0_el1, id_aa64isar1_el1,
        id_aa64mmfr0_el1, id_aa64mmfr1_el1, id_aa64mmfr2_el1, id_aa64afr0_el1,
        id_aa64afr0_el1, id_aa64afr1_el1, id_aa64zfr0_el1, clidr_el1,
        csselr_el1, vsesr_el2, erridr_el1, erxfr_el1, rvbar_el1, rvbar_el2,
        rvbar_el3, isr_el1, tpidrro_el0, cntfrq_el0, cntpct_el0, cntvct_el0,
        mdccsr_el0, dbgdtrrx_el0, dbgdtrtx_el0, osdtrrx_el1, osdtrtx_el1,
        mdrar_el1, oslar_el1, oslsr_el1, dbgauthstatus_el1, pmbidr_el1,
        pmsidr_el1, pmswinc_el0, pmceid0_el0, pmceid1_el0.
        * aarch64-tbl.h (aarch64_opcode_table): Add constraints to
        msr (F_SYS_WRITE), mrs (F_SYS_READ).

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]