Commit 0340791e authored by Yufeng Zhang's avatar Yufeng Zhang

gas/

	* config/tc-aarch64.c (parse_sys_reg): Update to use aarch64_sys_reg;
	call aarch64_sys_reg_deprecated_p and warn about the deprecated
	system registers.

gas/testsuite/

	* gas/aarch64/deprecated.d: New file.
	* gas/aarch64/deprecated.l: New file.
	* gas/aarch64/deprecated.s: New file.
	* gas/aarch64/sysreg-1.s: Add tests.
	* gas/aarch64/sysreg-1.d: Add tests.

include/opcode/

	* aarch64.h (aarch64_sys_reg): New typedef.
	(aarch64_sys_regs): Change to define with the new type.
	(aarch64_sys_reg_deprecated_p): Declare.

opcodes/

	* aarch64-opc.c (F_DEPRECATED): New macro.
	(aarch64_sys_regs): Update; flag "spsr_svc" and "spsr_hyp" with
	F_DEPRECATED.
	(aarch64_print_operand): Call aarch64_sys_reg_deprecated_p on
	AARCH64_OPND_SYSREG.
parent 392ce521
2013-11-05 Yufeng Zhang <yufeng.zhang@arm.com>
* config/tc-aarch64.c (parse_sys_reg): Update to use aarch64_sys_reg;
call aarch64_sys_reg_deprecated_p and warn about the deprecated
system registers.
2013-11-05 Yufeng Zhang <yufeng.zhang@arm.com>
* config/tc-aarch64.c (parse_operands): Handle AARCH64_OPND_COND1.
......
......@@ -3277,7 +3277,7 @@ parse_sys_reg (char **str, struct hash_control *sys_regs, int imple_defined_p)
{
char *p, *q;
char buf[32];
const struct aarch64_name_value_pair *o;
const aarch64_sys_reg *o;
int value;
p = buf;
......@@ -3313,7 +3313,12 @@ parse_sys_reg (char **str, struct hash_control *sys_regs, int imple_defined_p)
}
}
else
value = o->value;
{
if (aarch64_sys_reg_deprecated_p (o))
as_warn (_("system register name '%s' is deprecated and may be "
"removed in a future release"), buf);
value = o->value;
}
*str = q;
return value;
......
2013-11-05 Yufeng Zhang <yufeng.zhang@arm.com>
* gas/aarch64/deprecated.d: New file.
* gas/aarch64/deprecated.l: New file.
* gas/aarch64/deprecated.s: New file.
* gas/aarch64/sysreg-1.s: Add tests.
* gas/aarch64/sysreg-1.d: Add tests.
2013-11-05 Yufeng Zhang <yufeng.zhang@arm.com>
* gas/aarch64/alias.s: Add tests.
......
#name: Deprecated Support
#source: deprecated.s
#error-output: deprecated.l
#as: --warn
[^:]*: Assembler messages:
[^:]*:4: Warning: system register name 'spsr_svc' is deprecated and may be removed in a future release
[^:]*:5: Warning: system register name 'spsr_hyp' is deprecated and may be removed in a future release
// deprecated.s Test file for diagnostics on deprecated features.
.text
mrs x0, spsr_svc
msr spsr_hyp, x15
......@@ -4277,3 +4277,9 @@ Disassembly of section \.text:
42b4: d53cc04f mrs x15, rmr_el2
42b8: d51ec04f msr rmr_el3, x15
42bc: d53ec04f mrs x15, rmr_el3
42c0: d518400f msr spsr_el1, x15
42c4: d538400f mrs x15, spsr_el1
42c8: d51c400f msr spsr_el2, x15
42cc: d53c400f mrs x15, spsr_el2
42d0: d51e400f msr spsr_el3, x15
42d4: d53e400f mrs x15, spsr_el3
......@@ -162,3 +162,7 @@
rw_sys_reg sys_reg=rmr_el1 xreg=x15 r=1 w=1
rw_sys_reg sys_reg=rmr_el2 xreg=x15 r=1 w=1
rw_sys_reg sys_reg=rmr_el3 xreg=x15 r=1 w=1
rw_sys_reg sys_reg=spsr_el1 xreg=x15 r=1 w=1
rw_sys_reg sys_reg=spsr_el2 xreg=x15 r=1 w=1
rw_sys_reg sys_reg=spsr_el3 xreg=x15 r=1 w=1
2013-11-05 Yufeng Zhang <yufeng.zhang@arm.com>
* aarch64.h (aarch64_sys_reg): New typedef.
(aarch64_sys_regs): Change to define with the new type.
(aarch64_sys_reg_deprecated_p): Declare.
2013-11-05 Yufeng Zhang <yufeng.zhang@arm.com>
* aarch64.h (enum aarch64_operand_class): Add AARCH64_OPND_CLASS_COND.
......
......@@ -611,11 +611,20 @@ struct aarch64_name_value_pair
};
extern const struct aarch64_name_value_pair aarch64_operand_modifiers [];
extern const struct aarch64_name_value_pair aarch64_sys_regs [];
extern const struct aarch64_name_value_pair aarch64_pstatefields [];
extern const struct aarch64_name_value_pair aarch64_barrier_options [16];
extern const struct aarch64_name_value_pair aarch64_prfops [32];
typedef struct
{
const char * name;
aarch64_insn value;
uint32_t flags;
} aarch64_sys_reg;
extern const aarch64_sys_reg aarch64_sys_regs [];
extern bfd_boolean aarch64_sys_reg_deprecated_p (const aarch64_sys_reg *);
typedef struct
{
const char *template;
......
2013-11-05 Yufeng Zhang <yufeng.zhang@arm.com>
* aarch64-opc.c (F_DEPRECATED): New macro.
(aarch64_sys_regs): Update; flag "spsr_svc" and "spsr_hyp" with
F_DEPRECATED.
(aarch64_print_operand): Call aarch64_sys_reg_deprecated_p on
AARCH64_OPND_SYSREG.
2013-11-05 Yufeng Zhang <yufeng.zhang@arm.com>
* aarch64-dis.c (convert_ubfm_to_lsl): Check for cond != '111x'.
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment