diff options
author | Andrea Corallo <andrea.corallo@arm.com> | 2023-09-12 11:23:52 +0100 |
---|---|---|
committer | Andrea Corallo <andrea.corallo@arm.com> | 2023-12-19 15:35:49 +0100 |
commit | db168da2e0d7ea01d0a8ed4bdd0e035e47094fed (patch) | |
tree | 3eee402784b784b8f65d91a16c0ea9640cf47d47 | |
parent | 88b5a8ae138f3ace20f63635dbaea437fb17ae78 (diff) | |
download | fsf-binutils-gdb-db168da2e0d7ea01d0a8ed4bdd0e035e47094fed.zip fsf-binutils-gdb-db168da2e0d7ea01d0a8ed4bdd0e035e47094fed.tar.gz fsf-binutils-gdb-db168da2e0d7ea01d0a8ed4bdd0e035e47094fed.tar.bz2 |
aarch64: Add FEAT_ECBHB support
This patch add support for FEAT_ECBHB "Exploitative control using
branch history information" adding the "clrbhb" instruction. AFAIU
the same alias was originally added as "clearbhb" before the
architecture was finalized (Mandatory v8.9-a/v9.4-a; Optional
v8.0-a+/v9.0-a+).
-rw-r--r-- | gas/testsuite/gas/aarch64/clrbhb-1.d | 9 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/clrbhb-1.s | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/system.d | 4 | ||||
-rw-r--r-- | opcodes/aarch64-asm-2.c | 1 | ||||
-rw-r--r-- | opcodes/aarch64-dis-2.c | 3 | ||||
-rw-r--r-- | opcodes/aarch64-tbl.h | 4 |
6 files changed, 20 insertions, 3 deletions
diff --git a/gas/testsuite/gas/aarch64/clrbhb-1.d b/gas/testsuite/gas/aarch64/clrbhb-1.d new file mode 100644 index 0000000..272ee23 --- /dev/null +++ b/gas/testsuite/gas/aarch64/clrbhb-1.d @@ -0,0 +1,9 @@ +#objdump: -dr + +.*: file format .* + +Disassembly of section \.text: + +0+ <.*>: + 0: d50322df clrbhb + diff --git a/gas/testsuite/gas/aarch64/clrbhb-1.s b/gas/testsuite/gas/aarch64/clrbhb-1.s new file mode 100644 index 0000000..edf8846 --- /dev/null +++ b/gas/testsuite/gas/aarch64/clrbhb-1.s @@ -0,0 +1,2 @@ + clrbhb + diff --git a/gas/testsuite/gas/aarch64/system.d b/gas/testsuite/gas/aarch64/system.d index dbb7c0a..c140077 100644 --- a/gas/testsuite/gas/aarch64/system.d +++ b/gas/testsuite/gas/aarch64/system.d @@ -14,7 +14,7 @@ Disassembly of section \.text: .*: d503207f wfi .*: d503209f sev .*: d50320bf sevl -.*: d50322df clearbhb +.*: d50322df clrbhb .*: d503201f nop .*: d503203f yield .*: d503205f wfe @@ -37,7 +37,7 @@ Disassembly of section \.text: .*: d503227f (hint #0x13|gcsb dsync) .*: d503229f (hint #0x14|csdb) .*: d50322bf hint #0x15 -.*: d50322df (hint #0x16|clearbhb) +.*: d50322df (hint #0x16|clrbhb) .*: d50322ff hint #0x17 .*: d503231f (hint #0x18|paciaz) .*: d503233f (hint #0x19|paciasp) diff --git a/opcodes/aarch64-asm-2.c b/opcodes/aarch64-asm-2.c index ae0119a..e9b9ce2 100644 --- a/opcodes/aarch64-asm-2.c +++ b/opcodes/aarch64-asm-2.c @@ -426,6 +426,7 @@ aarch64_find_real_opcode (const aarch64_opcode *opcode) case 1200: /* movz */ value = 1200; /* --> movz. */ break; + case 3193: /* clrbhb */ case 1276: /* autibsp */ case 1275: /* autibz */ case 1274: /* autiasp */ diff --git a/opcodes/aarch64-dis-2.c b/opcodes/aarch64-dis-2.c index 38d72a7..977b1c1 100644 --- a/opcodes/aarch64-dis-2.c +++ b/opcodes/aarch64-dis-2.c @@ -31321,7 +31321,7 @@ aarch64_find_alias_opcode (const aarch64_opcode *opcode) case 1136: value = 1185; break; /* lduminl --> stuminl. */ case 1198: value = 1199; break; /* movn --> mov. */ case 1200: value = 1201; break; /* movz --> mov. */ - case 1215: value = 1276; break; /* hint --> autibsp. */ + case 1215: value = 3193; break; /* hint --> clrbhb. */ case 1235: value = 1239; break; /* dsb --> pssbb. */ case 1236: value = 1236; break; /* dsb --> dsb. */ case 1254: value = 1264; break; /* sys --> cosp. */ @@ -31481,6 +31481,7 @@ aarch64_find_next_alias_opcode (const aarch64_opcode *opcode) case 1185: value = 1136; break; /* stuminl --> lduminl. */ case 1199: value = 1198; break; /* mov --> movn. */ case 1201: value = 1200; break; /* mov --> movz. */ + case 3193: value = 1276; break; /* clrbhb --> autibsp. */ case 1276: value = 1275; break; /* autibsp --> autibz. */ case 1275: value = 1274; break; /* autibz --> autiasp. */ case 1274: value = 1273; break; /* autiasp --> autiaz. */ diff --git a/opcodes/aarch64-tbl.h b/opcodes/aarch64-tbl.h index 4ef28be..6734794 100644 --- a/opcodes/aarch64-tbl.h +++ b/opcodes/aarch64-tbl.h @@ -6113,6 +6113,10 @@ const struct aarch64_opcode aarch64_opcode_table[] = CSSC_INSN ("smin", 0x1ac06800, 0x7fe0fc00, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF), CSSC_INSN ("umin", 0x1ac06c00, 0x7fe0fc00, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF), + /* FEAT_CLRBHB part of the hint space and available without special + command-line flags. */ + CORE_INSN ("clrbhb", 0xd50322df, 0xffffffff, ic_system, 0, OP0 (), {}, F_ALIAS), + {0, 0, 0, 0, 0, 0, {}, {}, 0, 0, 0, NULL}, }; |