aarch64: Add CSR PDEC instruction
authorPrzemyslaw Wirkus <przemyslaw.wirkus@arm.com>
Wed, 28 Oct 2020 14:16:39 +0000 (14:16 +0000)
committerPrzemyslaw Wirkus <przemyslaw.wirkus@arm.com>
Wed, 28 Oct 2020 14:19:42 +0000 (14:19 +0000)
commitdd4a72c859a6896d6df824535590ccbb3631fdd7
tree7999561fc2abf2203654a950546803413b3930b8
parent82503ca7ed8301dc076919d5010bf981e35b1314
aarch64: Add CSR PDEC instruction

This patch adds:
+ New feature +csre to -march command line.
+ New instruction CSR PDEC associated with CSRE feature.

Please note that CSRE system registers were already upstreamed. This patch
should finalize CSRE feature implementation.

CSRE feature adds CSR PDEC (Decrements Call stack pointer by the size of
a Call stack record) instruction. Although this instruction has operand
(PDEC) it's instruction's only operand. PDEC forces instruction field Rt
to be set to 0b1111. This results in fixed opcode of the instruction.

gas/ChangeLog:

2020-10-27  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>

* NEWS: Update docs.
* config/tc-aarch64.c (parse_csr_operand): New operand parser.
(parse_operands): Call to CSR operand parser.
* testsuite/gas/aarch64/csre_csr-invalid.d: New test.
* testsuite/gas/aarch64/csre_csr-invalid.l: New test.
* testsuite/gas/aarch64/csre_csr-invalid.s: New test.
* testsuite/gas/aarch64/csre_csr.d: New test.
* testsuite/gas/aarch64/csre_csr.s: New test.

include/ChangeLog:

2020-10-27  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>

* opcode/aarch64.h (AARCH64_FEATURE_CSRE): New -march feature.
(enum aarch64_opnd): New CSR instruction field AARCH64_OPND_CSRE_CSR.

opcodes/ChangeLog:

2020-10-27  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>

* aarch64-opc.c (aarch64_print_operand): CSR PDEC operand print-out.
* aarch64-tbl.h (CSRE): New CSRE feature handler.
(_CSRE_INSN): New CSRE instruction type.
(struct aarch64_opcode): New 'csre' entry for a CSRE CLI feature.
* aarch64-asm-2.c: Regenerated.
* aarch64-dis-2.c: Regenerated.
* aarch64-opc-2.c: Regenerated.
13 files changed:
gas/NEWS
gas/config/tc-aarch64.c
gas/testsuite/gas/aarch64/csre_csr-invalid.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/csre_csr-invalid.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/csre_csr-invalid.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/csre_csr.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/csre_csr.s [new file with mode: 0644]
include/opcode/aarch64.h
opcodes/aarch64-asm-2.c
opcodes/aarch64-dis-2.c
opcodes/aarch64-opc-2.c
opcodes/aarch64-opc.c
opcodes/aarch64-tbl.h