]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
aarch64: Support for FEAT_OCCMO
authorEzra Sitorus <ezra.sitorus@arm.com>
Fri, 2 May 2025 16:14:07 +0000 (17:14 +0100)
committerRichard Earnshaw <rearnsha@arm.com>
Mon, 12 May 2025 15:54:36 +0000 (16:54 +0100)
FEAT_OCCMO - Outer Cacheable Cache Maintenance Operation - introduces
system instructions that provides software with a mechanism to publish
writes to the Outer cache level.

gas/testsuite/gas/aarch64/occmo.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/occmo.s [new file with mode: 0644]
opcodes/aarch64-opc.c

diff --git a/gas/testsuite/gas/aarch64/occmo.d b/gas/testsuite/gas/aarch64/occmo.d
new file mode 100644 (file)
index 0000000..388d8f4
--- /dev/null
@@ -0,0 +1,18 @@
+#name: FEAT_OCCMO Test
+#as: -march=armv9.5-a+memtag
+#objdump: -dr
+
+.*:     file format .*
+
+Disassembly of section .text:
+
+0+ <.*>:
+
+[^:]*: d50b7b00        dc      cvaoc, x0
+[^:]*: d50b7b1e        dc      cvaoc, x30
+[^:]*: d50b7be0        dc      cgdvaoc, x0
+[^:]*: d50b7bfe        dc      cgdvaoc, x30
+[^:]*: d50b7f00        dc      civaoc, x0
+[^:]*: d50b7f1e        dc      civaoc, x30
+[^:]*: d50b7fe0        dc      cigdvaoc, x0
+[^:]*: d50b7ffe        dc      cigdvaoc, x30
diff --git a/gas/testsuite/gas/aarch64/occmo.s b/gas/testsuite/gas/aarch64/occmo.s
new file mode 100644 (file)
index 0000000..92cfaf0
--- /dev/null
@@ -0,0 +1,8 @@
+       dc      cvaoc, x0
+       dc      cvaoc, x30
+       dc      cgdvaoc, x0
+       dc      cgdvaoc, x30
+       dc      civaoc, x0
+       dc      civaoc, x30
+       dc      cigdvaoc, x0
+       dc      cigdvaoc, x30
index 3a522511aa73e35c7e60b10aadb981fb6d0bb143..3bb93a99fff304fd579b16ff2d700df2abdebbad 100644 (file)
@@ -5214,6 +5214,8 @@ const aarch64_sys_ins_reg aarch64_sys_regs_dc[] =
     { "cvac",       CPENS (3, C7, C10, 1), F_HASXT, AARCH64_NO_FEATURES },
     { "cgvac",      CPENS (3, C7, C10, 3), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (MEMTAG) },
     { "cgdvac",     CPENS (3, C7, C10, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (MEMTAG) },
+    { "cvaoc",      CPENS (3, C7, C11, 0), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V9_5A) },
+    { "cgdvaoc",    CPENS (3, C7, C11, 7), F_HASXT | F_ARCHEXT, AARCH64_FEATURES (2, V9_5A, MEMTAG) },
     { "csw",       CPENS (0, C7, C10, 2), F_HASXT, AARCH64_NO_FEATURES },
     { "cgsw",       CPENS (0, C7, C10, 4), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (MEMTAG) },
     { "cgdsw",     CPENS (0, C7, C10, 6), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (MEMTAG) },
@@ -5230,6 +5232,8 @@ const aarch64_sys_ins_reg aarch64_sys_regs_dc[] =
     { "cisw",       CPENS (0, C7, C14, 2), F_HASXT, AARCH64_NO_FEATURES },
     { "cigsw",      CPENS (0, C7, C14, 4), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (MEMTAG) },
     { "cigdsw",     CPENS (0, C7, C14, 6), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (MEMTAG) },
+    { "civaoc",     CPENS (3, C7, C15, 0), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V9_5A) },
+    { "cigdvaoc",   CPENS (3, C7, C15, 7), F_HASXT | F_ARCHEXT, AARCH64_FEATURES (2, V9_5A, MEMTAG) },
     { "cipae",      CPENS (4, C7, C14, 0), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_7A) },
     { "cigdpae",    CPENS (4, C7, C14, 7), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_7A) },
     { "cipapa",     CPENS (6, C7, C14, 1), F_HASXT, AARCH64_NO_FEATURES },