[PATCH] aarch64: Support for FEAT_OCCMO

Richard Earnshaw (lists) Richard.Earnshaw@arm.com
Mon May 12 15:57:32 GMT 2025
On 02/05/2025 17:14, Ezra.Sitorus@arm.com wrote:
> From: Ezra Sitorus <ezra.sitorus@arm.com>
> 
> FEAT_OCCMO - Outer Cacheable Cache Maintenance Operation - introduces system
> instructions that provides software with a mechanism to publish writes to the
> Outer cache level.

I've re-flowed the commit message, as the lines were too long, and pushed this

Thanks

R.

> ---
> 
> This has been regression tested on aarch64-none-linux-gnu. I don't have commit
> access yet, so could somebody commit this if it looks ok?
> 
> Ezra
> 
>  gas/testsuite/gas/aarch64/occmo.d | 18 ++++++++++++++++++
>  gas/testsuite/gas/aarch64/occmo.s |  8 ++++++++
>  opcodes/aarch64-opc.c             |  4 ++++
>  3 files changed, 30 insertions(+)
>  create mode 100644 gas/testsuite/gas/aarch64/occmo.d
>  create mode 100644 gas/testsuite/gas/aarch64/occmo.s
> 
> diff --git a/gas/testsuite/gas/aarch64/occmo.d b/gas/testsuite/gas/aarch64/occmo.d
> new file mode 100644
> index 00000000000..388d8f4ca0a
> --- /dev/null
> +++ b/gas/testsuite/gas/aarch64/occmo.d
> @@ -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
> index 00000000000..92cfaf006fc
> --- /dev/null
> +++ b/gas/testsuite/gas/aarch64/occmo.s
> @@ -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
> diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c
> index 4f0c71696fa..8bd99a131e7 100644
> --- a/opcodes/aarch64-opc.c
> +++ b/opcodes/aarch64-opc.c
> @@ -5206,6 +5206,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) },
> @@ -5222,6 +5224,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 },



More information about the Binutils mailing list