aboutsummaryrefslogtreecommitdiff
path: root/opcodes/aarch64-asm-2.c
diff options
context:
space:
mode:
authorMatthew Wahab <matthew.wahab@arm.com>2015-12-11 10:22:40 +0000
committerMatthew Wahab <matthew.wahab@arm.com>2015-12-11 10:22:40 +0000
commit1e6f4800fc01c7957d0688158385aba3bf5ce8de (patch)
treebea10feba856f6bc823faf5b009f788f11333d45 /opcodes/aarch64-asm-2.c
parent9ed608f98b2c8c483c994f884429420e74835417 (diff)
downloadgdb-1e6f4800fc01c7957d0688158385aba3bf5ce8de.zip
gdb-1e6f4800fc01c7957d0688158385aba3bf5ce8de.tar.gz
gdb-1e6f4800fc01c7957d0688158385aba3bf5ce8de.tar.bz2
[AArch64][Patch 5/5] Add instruction PSB CSYNC
The Statistical Profile Extension adds the instruction PSB CSYNC as an alias for the HINT #17 instruction. This patch adds the instruction to binutils as a HINT alias that takes an operand. A new operand type, AARCH64_OPND_BARRIER_PSB, is added to represent the operand to PSB. A parser for the operand type is added to the assembler and a printer to the disassembler. The operand name "csync" is added to the list of HINT options with HINT number #17. Encoding and decoding of the operand is handled by the ins_hint/ext_hint functions added in the preceding patches. gas/ 2015-12-11 Matthew Wahab <matthew.wahab@arm.com> * config/tc-aarch64.c (aarch64_hint_opt_hsh): New. (parse_barrier_psb): New. (parse_operands): Add case for AARCH64_OPND_BARRIER_PSB. (md_begin): Set up aarch64_hint_opt_hsh. gas/testsuite/ 2015-12-11 Matthew Wahab <matthew.wahab@arm.com> * gas/aarch64/system-2.d: Enable the statistical profiling extension. Update the expected output. * gas/aarch64/system-2.s: Add tests for PSB CSYNC. * gas/aarch64/system.d: Update the expected output. include/opcode/ 2015-12-11 Matthew Wahab <matthew.wahab@arm.com> * aarch64.h (aarch64_opnd): Add AARCH64_OPND_BARRIER_PSB. * aarch64-asm-2.c: Regenerate. * aarch64-dis-2.c: Regenerate. * aarch64-opc-2.c: Regenerate. * aarch64-opc.c (aarch64_hint_options): Add "csync". (aarch64_print_operands): Handle AARCH64_OPND_BARRIER_PSB. * aarch64-tbl.h (aarch64_feature_stat_profile): New. (STAT_PROFILE): New. (aarch64_opcode_table): Add "psb". (AARCH64_OPERANDS): Add "BARRIER_PSB". Change-Id: I5ffb672d26a8b15b48785478d359350a9b70ca09
Diffstat (limited to 'opcodes/aarch64-asm-2.c')
-rw-r--r--opcodes/aarch64-asm-2.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/opcodes/aarch64-asm-2.c b/opcodes/aarch64-asm-2.c
index 2d1a22b..8644c05 100644
--- a/opcodes/aarch64-asm-2.c
+++ b/opcodes/aarch64-asm-2.c
@@ -422,6 +422,7 @@ aarch64_find_real_opcode (const aarch64_opcode *opcode)
case 1004: /* movz */
value = 1004; /* --> movz. */
break;
+ case 1018: /* psb */
case 1017: /* esb */
case 1016: /* sevl */
case 1015: /* sev */
@@ -432,12 +433,12 @@ aarch64_find_real_opcode (const aarch64_opcode *opcode)
case 1010: /* hint */
value = 1010; /* --> hint. */
break;
- case 1026: /* tlbi */
- case 1025: /* ic */
- case 1024: /* dc */
- case 1023: /* at */
- case 1022: /* sys */
- value = 1022; /* --> sys. */
+ case 1027: /* tlbi */
+ case 1026: /* ic */
+ case 1025: /* dc */
+ case 1024: /* at */
+ case 1023: /* sys */
+ value = 1023; /* --> sys. */
break;
default: return NULL;
}
@@ -562,6 +563,8 @@ aarch64_insert_operand (const aarch64_operand *self,
return aarch64_ins_barrier (self, info, code, inst);
case 87:
return aarch64_ins_prfop (self, info, code, inst);
+ case 88:
+ return aarch64_ins_hint (self, info, code, inst);
default: assert (0); abort ();
}
}