aarch64: Limit Rt register number for LS64 load/store instructions
authorPrzemyslaw Wirkus <przemyslaw.wirkus@arm.com>
Mon, 9 Nov 2020 11:09:12 +0000 (11:09 +0000)
committerPrzemyslaw Wirkus <przemyslaw.wirkus@arm.com>
Mon, 9 Nov 2020 11:19:44 +0000 (11:19 +0000)
commit8edca81ece5df534c1cdd1f8362e7b5b9b090cfa
tree7e07cdc4b08f84ca60406cc67afd31eaa71c8bf3
parenta76bf0e55d84e8529a337cad278814ba2e30d3af
aarch64: Limit Rt register number for LS64 load/store instructions

Atomic 64-byte load/store instructions limit Rt register number to
values matching below condition (register <Xt> number must be even
and <= 22):

    if Rt<4:3> == '11' || Rt<0> == '1' then UNDEFINED;

This patch adds check if Rt fulfills above requirement.

For more details regarding atomic 64-byte load/store instruction for
Armv8.7 please refer to Arm A64 Instruction set documentation for
Armv8-A architecture profile, see document page 157 for load
instruction, and pages 414-418 for store instructions of [0].

    [0]: https://developer.arm.com/docs/ddi0596/i
13 files changed:
gas/ChangeLog
gas/config/tc-aarch64.c
gas/testsuite/gas/aarch64/ls64-invalid.l
gas/testsuite/gas/aarch64/ls64-invalid.s
gas/testsuite/gas/aarch64/ls64.s
include/ChangeLog
include/opcode/aarch64.h
opcodes/ChangeLog
opcodes/aarch64-asm-2.c
opcodes/aarch64-dis-2.c
opcodes/aarch64-opc-2.c
opcodes/aarch64-opc.c
opcodes/aarch64-tbl.h