[binutils, ARM] <spec_reg> changes for VMRS and VMSR instructions
authorSudakshina Das <sudi.das@arm.com>
Tue, 21 May 2019 17:20:48 +0000 (18:20 +0100)
committerSudakshina Das <sudi.das@arm.com>
Tue, 21 May 2019 17:20:48 +0000 (18:20 +0100)
commitba6cd17f0a28e54d9b4ef46397d448f1d208d9a0
tree18c44358148197dc435b153c1b6f730135971ee3
parente39c1607a2df3a97bf7b70bef6de5b7a2db55eea
[binutils, ARM] <spec_reg> changes for VMRS and VMSR instructions

This patch makes changes to the <spec_reg> operand for VMRS and VMSR
instructions as per the Armv8.1-M Mainline.
New <spec_reg> options to support are:

0b0010: FPSCR_nzcvqc, access to FPSCR condition and saturation flags.
0b1100: VPR, privileged only access to the VPR register.
0b1101: P0, access to VPR.P0 predicate fields
0b1110: FPCXT_NS, enables saving and restoring of Non-secure floating
point context.
0b1111: FPCXT_S, enables saving and restoring of Secure floating point
context

*** gas/ChangeLog ***

2019-05-21  Sudakshina Das  <sudi.das@arm.com>

* config/tc-arm.c (parse_operands): Update case OP_RVC to
parse p0 and P0.
(do_vmrs): Add checks for valid operands with respect to
cpu and fpu options.
(do_vmsr): Likewise.
(reg_names): New reg_names for FPSCR_nzcvqc, VPR, FPCXT_NS
and FPCXT_S.
* testsuite/gas/arm/armv8_1-m-spec-reg.d: New.
* testsuite/gas/arm/armv8_1-m-spec-reg.s: New.
* testsuite/gas/arm/armv8_1-m-spec-reg-bad1.d: New.
* testsuite/gas/arm/armv8_1-m-spec-reg-bad2.d: New.
* testsuite/gas/arm/armv8_1-m-spec-reg-bad3.d: New.
* testsuite/gas/arm/armv8_1-m-spec-reg-bad1.l: New.
* testsuite/gas/arm/armv8_1-m-spec-reg-bad2.l: New.
* testsuite/gas/arm/armv8_1-m-spec-reg-bad3.l: New.
* testsuite/gas/arm/vfp1xD.d: Updated to allow new valid values.
* testsuite/gas/arm/vfp1xD_t2.d: Likewise.

*** opcodes/ChangeLog ***

2019-05-21  Sudakshina Das  <sudi.das@arm.com>

* arm-dis.c (coprocessor_opcodes): New instructions for VMRS
and VMSR with the new operands.
14 files changed:
gas/ChangeLog
gas/config/tc-arm.c
gas/testsuite/gas/arm/armv8_1-m-spec-reg-bad1.d [new file with mode: 0644]
gas/testsuite/gas/arm/armv8_1-m-spec-reg-bad1.l [new file with mode: 0644]
gas/testsuite/gas/arm/armv8_1-m-spec-reg-bad2.d [new file with mode: 0644]
gas/testsuite/gas/arm/armv8_1-m-spec-reg-bad2.l [new file with mode: 0644]
gas/testsuite/gas/arm/armv8_1-m-spec-reg-bad3.d [new file with mode: 0644]
gas/testsuite/gas/arm/armv8_1-m-spec-reg-bad3.l [new file with mode: 0644]
gas/testsuite/gas/arm/armv8_1-m-spec-reg.d [new file with mode: 0644]
gas/testsuite/gas/arm/armv8_1-m-spec-reg.s [new file with mode: 0644]
gas/testsuite/gas/arm/vfp1xD.d
gas/testsuite/gas/arm/vfp1xD_t2.d
opcodes/ChangeLog
opcodes/arm-dis.c