mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-16 23:06:48 +08:00
aarch64: Add support for Armv8-R system registers
This patch adds support for the system registers introduced in Armv8-R AArch64. gas/ChangeLog: 2020-09-08 Alex Coplan <alex.coplan@arm.com> * config/tc-aarch64.c (parse_sys_reg): Also pass sysreg name to validation function. (parse_sys_ins_reg): Likewise. (print_operands): Pass CPU features to aarch64_print_operand(). * testsuite/gas/aarch64/v8-r-bad-sysregs.d: New test. * testsuite/gas/aarch64/v8-r-bad-sysregs.l: Error output. * testsuite/gas/aarch64/v8-r-bad-sysregs.s: Input. * testsuite/gas/aarch64/v8-r-sysregs-need-arch.d: New test. * testsuite/gas/aarch64/v8-r-sysregs-need-arch.l: Error output. * testsuite/gas/aarch64/v8-r-sysregs.d: New test. * testsuite/gas/aarch64/v8-r-sysregs.s: Input for previous two tests. include/ChangeLog: 2020-09-08 Alex Coplan <alex.coplan@arm.com> * opcode/aarch64.h (aarch64_sys_ins_reg_supported_p): Also take system register name in order to simplify validation for v8-R. (aarch64_print_operand): Also take CPU feature set, as disassembly for system registers now depends on arch variant. opcodes/ChangeLog: 2020-09-08 Alex Coplan <alex.coplan@arm.com> * aarch64-dis.c (print_operands): Pass CPU features to aarch64_print_operand(). * aarch64-opc.c (aarch64_print_operand): Use CPU features to determine preferred disassembly of system registers. (SR_RNG): Refactor to use new SR_FEAT2 macro. (SR_FEAT2): New. (SR_V8_1_A): New. (SR_V8_4_A): New. (SR_V8_A): New. (SR_V8_R): New. (SR_EXPAND_ELx): New. (SR_EXPAND_EL12): New. (aarch64_sys_regs): Specify which registers are only on A-profile, add R-profile system registers. (ENC_BARLAR): New. (PRBARn_ELx): New. (PRLARn_ELx): New. (aarch64_sys_ins_reg_supported_p): Reject EL3 registers for Armv8-R AArch64.
This commit is contained in:
@ -977,7 +977,8 @@ typedef struct
|
||||
|
||||
extern bfd_boolean aarch64_sys_ins_reg_has_xt (const aarch64_sys_ins_reg *);
|
||||
extern bfd_boolean
|
||||
aarch64_sys_ins_reg_supported_p (const aarch64_feature_set, aarch64_insn,
|
||||
aarch64_sys_ins_reg_supported_p (const aarch64_feature_set,
|
||||
const char *reg_name, aarch64_insn,
|
||||
uint32_t, aarch64_feature_set);
|
||||
|
||||
extern const aarch64_sys_ins_reg aarch64_sys_regs_ic [];
|
||||
@ -1270,7 +1271,8 @@ aarch64_get_opcode (enum aarch64_op);
|
||||
extern void
|
||||
aarch64_print_operand (char *, size_t, bfd_vma, const aarch64_opcode *,
|
||||
const aarch64_opnd_info *, int, int *, bfd_vma *,
|
||||
char **);
|
||||
char **,
|
||||
aarch64_feature_set features);
|
||||
|
||||
/* Miscellaneous interface. */
|
||||
|
||||
|
Reference in New Issue
Block a user