[PATCH 1/5] gas: aarch64: Add flag for Generic Interrupt Controller v5
Richard Earnshaw (lists)
Richard.Earnshaw@arm.com
Tue Sep 30 14:08:38 GMT 2025
On 02/09/2025 06:55, saurabh.jha@arm.com wrote:
> From: Saurabh Jha <saurabh.jha@arm.com>
>
> Generic Interrupt Controller v5, GICv5, adds new system registers
> and system instructions. These are enabled with the +gcie flag.
> ---
> gas/config/tc-aarch64.c | 1 +
> gas/doc/c-aarch64.texi | 2 ++
> include/opcode/aarch64.h | 2 ++
> opcodes/aarch64-tbl.h | 3 +++
> 4 files changed, 8 insertions(+)
>
> diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
> index 974951cef25..4e9b60205ff 100644
> --- a/gas/config/tc-aarch64.c
> +++ b/gas/config/tc-aarch64.c
> @@ -10863,6 +10863,7 @@ static const struct aarch64_option_cpu_value_table aarch64_features[] = {
> {"pops", AARCH64_FEATURE (PoPS), AARCH64_NO_FEATURES},
> {"sve2p2", AARCH64_FEATURE (SVE2p2), AARCH64_FEATURE (SVE2p1)},
> {"sme2p2", AARCH64_FEATURE (SME2p2), AARCH64_FEATURE (SME2p1)},
> + {"gcie", AARCH64_FEATURE (GCIE), AARCH64_NO_FEATURES},
> {NULL, AARCH64_NO_FEATURES, AARCH64_NO_FEATURES},
> };
>
> diff --git a/gas/doc/c-aarch64.texi b/gas/doc/c-aarch64.texi
> index 8f5702f5b13..53dfc09a802 100644
> --- a/gas/doc/c-aarch64.texi
> +++ b/gas/doc/c-aarch64.texi
> @@ -223,6 +223,8 @@ automatically cause those extensions to be disabled.
> @tab Enable Armv9.6 fprcvt instructions.
> @item @code{frintts} @tab @code{fp}
> @tab Enable floating-point round to integral value instructions.
> +@item @code{gcie} @tab
> + @tab Enable the Generic Interrupt Controller v5 Extension.
I think this would be better to use the acronym expansion for GCIE, rather than for GIC. So either
@tab Enable the GICv5 (Global Interrupt Controller) CPU Interface Extension.
or
@tab Enable the GICv5 CPU Interface Extension
If you don't feel it necessary to expand GIC.
> @item @code{gcs} @tab
> @tab Enable the Guarded Control Stack Extension.
> @item @code{hbc} @tab
> diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h
> index 4425dd46a45..ee98a711ce4 100644
> --- a/include/opcode/aarch64.h
> +++ b/include/opcode/aarch64.h
> @@ -310,6 +310,8 @@ enum aarch64_feature_bit {
> AARCH64_FEATURE_FPRCVT,
> /* Point of Physical Storage. */
> AARCH64_FEATURE_PoPS,
> + /* Generic Interrupt Controller v5. */
This comment is similar.
> + AARCH64_FEATURE_GCIE,
>
> /* Virtual features. These are used to gate instructions that are enabled
> by either of two (or more) sets of command line flags. */
> diff --git a/opcodes/aarch64-tbl.h b/opcodes/aarch64-tbl.h
> index 0ae7342e2e1..34b551eb64c 100644
> --- a/opcodes/aarch64-tbl.h
> +++ b/opcodes/aarch64-tbl.h
> @@ -3009,6 +3009,8 @@ static const aarch64_feature_set aarch64_feature_sve_sme2p2 =
> AARCH64_FEATURE (SVE_SME2p2);
> static const aarch64_feature_set aarch64_feature_sve2p2_sme2p2 =
> AARCH64_FEATURE (SVE2p2_SME2p2);
> +static const aarch64_feature_set aarch64_feature_gcie =
> + AARCH64_FEATURE (GCIE);
>
> #define CORE &aarch64_feature_v8
> #define FP &aarch64_feature_fp
> @@ -3119,6 +3121,7 @@ static const aarch64_feature_set aarch64_feature_sve2p2_sme2p2 =
> #define SME2p2 &aarch64_feature_sme2p2
> #define SVE_SME2p2 &aarch64_feature_sve_sme2p2
> #define SVE2p2_SME2p2 &aarch64_feature_sve2p2_sme2p2
> +#define GCIE &aarch64_feature_gcie
>
> #define CORE_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS) \
> { NAME, OPCODE, MASK, CLASS, OP, CORE, OPS, QUALS, FLAGS | F_INVALID_IMM_SYMS_1, 0, 0, NULL }
Otherwise, this is OK.
R.
More information about the Binutils
mailing list