diff mbox series

tunes/arm: add support for newer arm64 cores

Message ID 20251001175814.62654-1-jon.mason@arm.com
State New
Headers show
Series tunes/arm: add support for newer arm64 cores | expand

Commit Message

Jon Mason Oct. 1, 2025, 5:58 p.m. UTC
Add tunes for cores that have been present since GCC 14.1.0.
These have been present in meta-arm since mid-July, and have all been
verified with fvp-base and testimage.  Of those present in meta-arm,
arch-armv8-9a.inc, arch-armv9-4a.inc, and arch-armv9-5a.inc have been
excluded from this commit, as there are currently issues compiling some
packages (but still present in meta-arm for those that want to use them
despite those issues).

Signed-off-by: Jon Mason <jon.mason@arm.com>
---
 meta/conf/machine/include/arm/arch-armv8-7a.inc | 14 ++++++++++++++
 meta/conf/machine/include/arm/arch-armv8-8a.inc | 14 ++++++++++++++
 meta/conf/machine/include/arm/arch-armv9-1a.inc | 13 +++++++++++++
 meta/conf/machine/include/arm/arch-armv9-2a.inc | 13 +++++++++++++
 meta/conf/machine/include/arm/arch-armv9-3a.inc | 13 +++++++++++++
 5 files changed, 67 insertions(+)
 create mode 100644 meta/conf/machine/include/arm/arch-armv8-7a.inc
 create mode 100644 meta/conf/machine/include/arm/arch-armv8-8a.inc
 create mode 100644 meta/conf/machine/include/arm/arch-armv9-1a.inc
 create mode 100644 meta/conf/machine/include/arm/arch-armv9-2a.inc
 create mode 100644 meta/conf/machine/include/arm/arch-armv9-3a.inc

Comments

Khem Raj Oct. 1, 2025, 6:09 p.m. UTC | #1
On Wed, Oct 1, 2025 at 10:58 AM Jon Mason via lists.openembedded.org
<jon.mason=arm.com@lists.openembedded.org> wrote:
>
> Add tunes for cores that have been present since GCC 14.1.0.
> These have been present in meta-arm since mid-July, and have all been
> verified with fvp-base and testimage.  Of those present in meta-arm,
> arch-armv8-9a.inc, arch-armv9-4a.inc, and arch-armv9-5a.inc have been
> excluded from this commit, as there are currently issues compiling some
> packages (but still present in meta-arm for those that want to use them
> despite those issues).
>

I checked that these options are also available in clang 20+ as well. So
these changes are ok. It will be good to verify some builds with clang
as TOOLCHAIN
and see all holds

> Signed-off-by: Jon Mason <jon.mason@arm.com>
> ---
>  meta/conf/machine/include/arm/arch-armv8-7a.inc | 14 ++++++++++++++
>  meta/conf/machine/include/arm/arch-armv8-8a.inc | 14 ++++++++++++++
>  meta/conf/machine/include/arm/arch-armv9-1a.inc | 13 +++++++++++++
>  meta/conf/machine/include/arm/arch-armv9-2a.inc | 13 +++++++++++++
>  meta/conf/machine/include/arm/arch-armv9-3a.inc | 13 +++++++++++++
>  5 files changed, 67 insertions(+)
>  create mode 100644 meta/conf/machine/include/arm/arch-armv8-7a.inc
>  create mode 100644 meta/conf/machine/include/arm/arch-armv8-8a.inc
>  create mode 100644 meta/conf/machine/include/arm/arch-armv9-1a.inc
>  create mode 100644 meta/conf/machine/include/arm/arch-armv9-2a.inc
>  create mode 100644 meta/conf/machine/include/arm/arch-armv9-3a.inc
>
> diff --git a/meta/conf/machine/include/arm/arch-armv8-7a.inc b/meta/conf/machine/include/arm/arch-armv8-7a.inc
> new file mode 100644
> index 000000000000..6039baca3568
> --- /dev/null
> +++ b/meta/conf/machine/include/arm/arch-armv8-7a.inc
> @@ -0,0 +1,14 @@
> +DEFAULTTUNE ?= "armv8-7a"
> +
> +TUNEVALID[armv8-7a] = "Enable instructions for ARMv8.7-a"
> +TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-7a', ' -march=armv8.7-a', '', d)}"
> +MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-7a', 'armv8-7a:', '', d)}"
> +
> +require conf/machine/include/arm/arch-armv8a.inc
> +
> +# Little Endian base configs
> +AVAILTUNES += "armv8-7a"
> +ARMPKGARCH:tune-armv8-7a                    ?= "armv8-7a"
> +TUNE_FEATURES:tune-armv8-7a                  = "aarch64 armv8-7a"
> +PACKAGE_EXTRA_ARCHS:tune-armv8-7a            = "${PACKAGE_EXTRA_ARCHS:tune-armv8a} armv8-7a"
> +BASE_LIB:tune-armv8-7a                       = "lib64"
> diff --git a/meta/conf/machine/include/arm/arch-armv8-8a.inc b/meta/conf/machine/include/arm/arch-armv8-8a.inc
> new file mode 100644
> index 000000000000..5694330a1d22
> --- /dev/null
> +++ b/meta/conf/machine/include/arm/arch-armv8-8a.inc
> @@ -0,0 +1,14 @@
> +DEFAULTTUNE ?= "armv8-8a"
> +
> +TUNEVALID[armv8-8a] = "Enable instructions for ARMv8.8-a"
> +TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-8a', ' -march=armv8.8-a', '', d)}"
> +MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-8a', 'armv8-8a:', '', d)}"
> +
> +require conf/machine/include/arm/arch-armv8a.inc
> +
> +# Little Endian base configs
> +AVAILTUNES += "armv8-8a"
> +ARMPKGARCH:tune-armv8-8a                    ?= "armv8-8a"
> +TUNE_FEATURES:tune-armv8-8a                  = "aarch64 armv8-8a"
> +PACKAGE_EXTRA_ARCHS:tune-armv8-8a            = "${PACKAGE_EXTRA_ARCHS:tune-armv8a} armv8-8a"
> +BASE_LIB:tune-armv8-8a                       = "lib64"
> diff --git a/meta/conf/machine/include/arm/arch-armv9-1a.inc b/meta/conf/machine/include/arm/arch-armv9-1a.inc
> new file mode 100644
> index 000000000000..f9e6dce77c82
> --- /dev/null
> +++ b/meta/conf/machine/include/arm/arch-armv9-1a.inc
> @@ -0,0 +1,13 @@
> +DEFAULTTUNE ?= "armv9-1a"
> +
> +TUNEVALID[armv9-1a] = "Enable instructions for ARMv9.1-a"
> +TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv9-1a', ' -march=armv9.1-a', '', d)}"
> +MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv9-1a', 'armv9-1a:', '', d)}"
> +
> +require conf/machine/include/arm/arch-armv9a.inc
> +
> +AVAILTUNES                                  += "armv9-1a"
> +ARMPKGARCH:tune-armv9-1a                    ?= "armv9-1a"
> +TUNE_FEATURES:tune-armv9-1a                  = "aarch64 armv9-1a"
> +PACKAGE_EXTRA_ARCHS:tune-armv9-1a            = "${PACKAGE_EXTRA_ARCHS:tune-armv9a} armv9-1a"
> +BASE_LIB:tune-armv9-1a                       = "lib64"
> diff --git a/meta/conf/machine/include/arm/arch-armv9-2a.inc b/meta/conf/machine/include/arm/arch-armv9-2a.inc
> new file mode 100644
> index 000000000000..4b5cf3ed156a
> --- /dev/null
> +++ b/meta/conf/machine/include/arm/arch-armv9-2a.inc
> @@ -0,0 +1,13 @@
> +DEFAULTTUNE ?= "armv9-2a"
> +
> +TUNEVALID[armv9-2a] = "Enable instructions for ARMv9.2-a"
> +TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv9-2a', ' -march=armv9.2-a', '', d)}"
> +MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv9-2a', 'armv9-2a:', '', d)}"
> +
> +require conf/machine/include/arm/arch-armv9a.inc
> +
> +AVAILTUNES                                  += "armv9-2a"
> +ARMPKGARCH:tune-armv9-2a                    ?= "armv9-2a"
> +TUNE_FEATURES:tune-armv9-2a                  = "aarch64 armv9-2a"
> +PACKAGE_EXTRA_ARCHS:tune-armv9-2a            = "${PACKAGE_EXTRA_ARCHS:tune-armv9a} armv9-2a"
> +BASE_LIB:tune-armv9-2a                       = "lib64"
> diff --git a/meta/conf/machine/include/arm/arch-armv9-3a.inc b/meta/conf/machine/include/arm/arch-armv9-3a.inc
> new file mode 100644
> index 000000000000..c345f1532c48
> --- /dev/null
> +++ b/meta/conf/machine/include/arm/arch-armv9-3a.inc
> @@ -0,0 +1,13 @@
> +DEFAULTTUNE ?= "armv9-3a"
> +
> +TUNEVALID[armv9-3a] = "Enable instructions for ARMv9.3-a"
> +TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv9-3a', ' -march=armv9.3-a', '', d)}"
> +MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv9-3a', 'armv9-3a:', '', d)}"
> +
> +require conf/machine/include/arm/arch-armv9a.inc
> +
> +AVAILTUNES                                  += "armv9-3a"
> +ARMPKGARCH:tune-armv9-3a                    ?= "armv9-3a"
> +TUNE_FEATURES:tune-armv9-3a                  = "aarch64 armv9-3a"
> +PACKAGE_EXTRA_ARCHS:tune-armv9-3a            = "${PACKAGE_EXTRA_ARCHS:tune-armv9a} armv9-3a"
> +BASE_LIB:tune-armv9-3a                       = "lib64"
> --
> 2.50.1 (Apple Git-155)
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#224317): https://lists.openembedded.org/g/openembedded-core/message/224317
> Mute This Topic: https://lists.openembedded.org/mt/115538599/1997914
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Jon Mason Oct. 2, 2025, 12:43 a.m. UTC | #2
On Wed, Oct 1, 2025 at 2:10 PM Khem Raj via lists.openembedded.org
<raj.khem=gmail.com@lists.openembedded.org> wrote:
>
> On Wed, Oct 1, 2025 at 10:58 AM Jon Mason via lists.openembedded.org
> <jon.mason=arm.com@lists.openembedded.org> wrote:
> >
> > Add tunes for cores that have been present since GCC 14.1.0.
> > These have been present in meta-arm since mid-July, and have all been
> > verified with fvp-base and testimage.  Of those present in meta-arm,
> > arch-armv8-9a.inc, arch-armv9-4a.inc, and arch-armv9-5a.inc have been
> > excluded from this commit, as there are currently issues compiling some
> > packages (but still present in meta-arm for those that want to use them
> > despite those issues).
> >
>
> I checked that these options are also available in clang 20+ as well. So
> these changes are ok. It will be good to verify some builds with clang
> as TOOLCHAIN
> and see all holds

I checked armv8-8a and armv9-3a with fvp-base and clang, and it passes
testimage.

Thanks,
Jon

>
> > Signed-off-by: Jon Mason <jon.mason@arm.com>
> > ---
> >  meta/conf/machine/include/arm/arch-armv8-7a.inc | 14 ++++++++++++++
> >  meta/conf/machine/include/arm/arch-armv8-8a.inc | 14 ++++++++++++++
> >  meta/conf/machine/include/arm/arch-armv9-1a.inc | 13 +++++++++++++
> >  meta/conf/machine/include/arm/arch-armv9-2a.inc | 13 +++++++++++++
> >  meta/conf/machine/include/arm/arch-armv9-3a.inc | 13 +++++++++++++
> >  5 files changed, 67 insertions(+)
> >  create mode 100644 meta/conf/machine/include/arm/arch-armv8-7a.inc
> >  create mode 100644 meta/conf/machine/include/arm/arch-armv8-8a.inc
> >  create mode 100644 meta/conf/machine/include/arm/arch-armv9-1a.inc
> >  create mode 100644 meta/conf/machine/include/arm/arch-armv9-2a.inc
> >  create mode 100644 meta/conf/machine/include/arm/arch-armv9-3a.inc
> >
> > diff --git a/meta/conf/machine/include/arm/arch-armv8-7a.inc b/meta/conf/machine/include/arm/arch-armv8-7a.inc
> > new file mode 100644
> > index 000000000000..6039baca3568
> > --- /dev/null
> > +++ b/meta/conf/machine/include/arm/arch-armv8-7a.inc
> > @@ -0,0 +1,14 @@
> > +DEFAULTTUNE ?= "armv8-7a"
> > +
> > +TUNEVALID[armv8-7a] = "Enable instructions for ARMv8.7-a"
> > +TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-7a', ' -march=armv8.7-a', '', d)}"
> > +MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-7a', 'armv8-7a:', '', d)}"
> > +
> > +require conf/machine/include/arm/arch-armv8a.inc
> > +
> > +# Little Endian base configs
> > +AVAILTUNES += "armv8-7a"
> > +ARMPKGARCH:tune-armv8-7a                    ?= "armv8-7a"
> > +TUNE_FEATURES:tune-armv8-7a                  = "aarch64 armv8-7a"
> > +PACKAGE_EXTRA_ARCHS:tune-armv8-7a            = "${PACKAGE_EXTRA_ARCHS:tune-armv8a} armv8-7a"
> > +BASE_LIB:tune-armv8-7a                       = "lib64"
> > diff --git a/meta/conf/machine/include/arm/arch-armv8-8a.inc b/meta/conf/machine/include/arm/arch-armv8-8a.inc
> > new file mode 100644
> > index 000000000000..5694330a1d22
> > --- /dev/null
> > +++ b/meta/conf/machine/include/arm/arch-armv8-8a.inc
> > @@ -0,0 +1,14 @@
> > +DEFAULTTUNE ?= "armv8-8a"
> > +
> > +TUNEVALID[armv8-8a] = "Enable instructions for ARMv8.8-a"
> > +TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-8a', ' -march=armv8.8-a', '', d)}"
> > +MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-8a', 'armv8-8a:', '', d)}"
> > +
> > +require conf/machine/include/arm/arch-armv8a.inc
> > +
> > +# Little Endian base configs
> > +AVAILTUNES += "armv8-8a"
> > +ARMPKGARCH:tune-armv8-8a                    ?= "armv8-8a"
> > +TUNE_FEATURES:tune-armv8-8a                  = "aarch64 armv8-8a"
> > +PACKAGE_EXTRA_ARCHS:tune-armv8-8a            = "${PACKAGE_EXTRA_ARCHS:tune-armv8a} armv8-8a"
> > +BASE_LIB:tune-armv8-8a                       = "lib64"
> > diff --git a/meta/conf/machine/include/arm/arch-armv9-1a.inc b/meta/conf/machine/include/arm/arch-armv9-1a.inc
> > new file mode 100644
> > index 000000000000..f9e6dce77c82
> > --- /dev/null
> > +++ b/meta/conf/machine/include/arm/arch-armv9-1a.inc
> > @@ -0,0 +1,13 @@
> > +DEFAULTTUNE ?= "armv9-1a"
> > +
> > +TUNEVALID[armv9-1a] = "Enable instructions for ARMv9.1-a"
> > +TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv9-1a', ' -march=armv9.1-a', '', d)}"
> > +MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv9-1a', 'armv9-1a:', '', d)}"
> > +
> > +require conf/machine/include/arm/arch-armv9a.inc
> > +
> > +AVAILTUNES                                  += "armv9-1a"
> > +ARMPKGARCH:tune-armv9-1a                    ?= "armv9-1a"
> > +TUNE_FEATURES:tune-armv9-1a                  = "aarch64 armv9-1a"
> > +PACKAGE_EXTRA_ARCHS:tune-armv9-1a            = "${PACKAGE_EXTRA_ARCHS:tune-armv9a} armv9-1a"
> > +BASE_LIB:tune-armv9-1a                       = "lib64"
> > diff --git a/meta/conf/machine/include/arm/arch-armv9-2a.inc b/meta/conf/machine/include/arm/arch-armv9-2a.inc
> > new file mode 100644
> > index 000000000000..4b5cf3ed156a
> > --- /dev/null
> > +++ b/meta/conf/machine/include/arm/arch-armv9-2a.inc
> > @@ -0,0 +1,13 @@
> > +DEFAULTTUNE ?= "armv9-2a"
> > +
> > +TUNEVALID[armv9-2a] = "Enable instructions for ARMv9.2-a"
> > +TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv9-2a', ' -march=armv9.2-a', '', d)}"
> > +MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv9-2a', 'armv9-2a:', '', d)}"
> > +
> > +require conf/machine/include/arm/arch-armv9a.inc
> > +
> > +AVAILTUNES                                  += "armv9-2a"
> > +ARMPKGARCH:tune-armv9-2a                    ?= "armv9-2a"
> > +TUNE_FEATURES:tune-armv9-2a                  = "aarch64 armv9-2a"
> > +PACKAGE_EXTRA_ARCHS:tune-armv9-2a            = "${PACKAGE_EXTRA_ARCHS:tune-armv9a} armv9-2a"
> > +BASE_LIB:tune-armv9-2a                       = "lib64"
> > diff --git a/meta/conf/machine/include/arm/arch-armv9-3a.inc b/meta/conf/machine/include/arm/arch-armv9-3a.inc
> > new file mode 100644
> > index 000000000000..c345f1532c48
> > --- /dev/null
> > +++ b/meta/conf/machine/include/arm/arch-armv9-3a.inc
> > @@ -0,0 +1,13 @@
> > +DEFAULTTUNE ?= "armv9-3a"
> > +
> > +TUNEVALID[armv9-3a] = "Enable instructions for ARMv9.3-a"
> > +TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv9-3a', ' -march=armv9.3-a', '', d)}"
> > +MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv9-3a', 'armv9-3a:', '', d)}"
> > +
> > +require conf/machine/include/arm/arch-armv9a.inc
> > +
> > +AVAILTUNES                                  += "armv9-3a"
> > +ARMPKGARCH:tune-armv9-3a                    ?= "armv9-3a"
> > +TUNE_FEATURES:tune-armv9-3a                  = "aarch64 armv9-3a"
> > +PACKAGE_EXTRA_ARCHS:tune-armv9-3a            = "${PACKAGE_EXTRA_ARCHS:tune-armv9a} armv9-3a"
> > +BASE_LIB:tune-armv9-3a                       = "lib64"
> > --
> > 2.50.1 (Apple Git-155)
> >
> >
> >
> >
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#224318): https://lists.openembedded.org/g/openembedded-core/message/224318
> Mute This Topic: https://lists.openembedded.org/mt/115538599/3616920
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [jdmason@kudzu.us]
> -=-=-=-=-=-=-=-=-=-=-=-
>
diff mbox series

Patch

diff --git a/meta/conf/machine/include/arm/arch-armv8-7a.inc b/meta/conf/machine/include/arm/arch-armv8-7a.inc
new file mode 100644
index 000000000000..6039baca3568
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv8-7a.inc
@@ -0,0 +1,14 @@ 
+DEFAULTTUNE ?= "armv8-7a"
+
+TUNEVALID[armv8-7a] = "Enable instructions for ARMv8.7-a"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-7a', ' -march=armv8.7-a', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-7a', 'armv8-7a:', '', d)}"
+
+require conf/machine/include/arm/arch-armv8a.inc
+
+# Little Endian base configs
+AVAILTUNES += "armv8-7a"
+ARMPKGARCH:tune-armv8-7a                    ?= "armv8-7a"
+TUNE_FEATURES:tune-armv8-7a                  = "aarch64 armv8-7a"
+PACKAGE_EXTRA_ARCHS:tune-armv8-7a            = "${PACKAGE_EXTRA_ARCHS:tune-armv8a} armv8-7a"
+BASE_LIB:tune-armv8-7a                       = "lib64"
diff --git a/meta/conf/machine/include/arm/arch-armv8-8a.inc b/meta/conf/machine/include/arm/arch-armv8-8a.inc
new file mode 100644
index 000000000000..5694330a1d22
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv8-8a.inc
@@ -0,0 +1,14 @@ 
+DEFAULTTUNE ?= "armv8-8a"
+
+TUNEVALID[armv8-8a] = "Enable instructions for ARMv8.8-a"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-8a', ' -march=armv8.8-a', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-8a', 'armv8-8a:', '', d)}"
+
+require conf/machine/include/arm/arch-armv8a.inc
+
+# Little Endian base configs
+AVAILTUNES += "armv8-8a"
+ARMPKGARCH:tune-armv8-8a                    ?= "armv8-8a"
+TUNE_FEATURES:tune-armv8-8a                  = "aarch64 armv8-8a"
+PACKAGE_EXTRA_ARCHS:tune-armv8-8a            = "${PACKAGE_EXTRA_ARCHS:tune-armv8a} armv8-8a"
+BASE_LIB:tune-armv8-8a                       = "lib64"
diff --git a/meta/conf/machine/include/arm/arch-armv9-1a.inc b/meta/conf/machine/include/arm/arch-armv9-1a.inc
new file mode 100644
index 000000000000..f9e6dce77c82
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv9-1a.inc
@@ -0,0 +1,13 @@ 
+DEFAULTTUNE ?= "armv9-1a"
+
+TUNEVALID[armv9-1a] = "Enable instructions for ARMv9.1-a"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv9-1a', ' -march=armv9.1-a', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv9-1a', 'armv9-1a:', '', d)}"
+
+require conf/machine/include/arm/arch-armv9a.inc
+
+AVAILTUNES                                  += "armv9-1a"
+ARMPKGARCH:tune-armv9-1a                    ?= "armv9-1a"
+TUNE_FEATURES:tune-armv9-1a                  = "aarch64 armv9-1a"
+PACKAGE_EXTRA_ARCHS:tune-armv9-1a            = "${PACKAGE_EXTRA_ARCHS:tune-armv9a} armv9-1a"
+BASE_LIB:tune-armv9-1a                       = "lib64"
diff --git a/meta/conf/machine/include/arm/arch-armv9-2a.inc b/meta/conf/machine/include/arm/arch-armv9-2a.inc
new file mode 100644
index 000000000000..4b5cf3ed156a
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv9-2a.inc
@@ -0,0 +1,13 @@ 
+DEFAULTTUNE ?= "armv9-2a"
+
+TUNEVALID[armv9-2a] = "Enable instructions for ARMv9.2-a"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv9-2a', ' -march=armv9.2-a', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv9-2a', 'armv9-2a:', '', d)}"
+
+require conf/machine/include/arm/arch-armv9a.inc
+
+AVAILTUNES                                  += "armv9-2a"
+ARMPKGARCH:tune-armv9-2a                    ?= "armv9-2a"
+TUNE_FEATURES:tune-armv9-2a                  = "aarch64 armv9-2a"
+PACKAGE_EXTRA_ARCHS:tune-armv9-2a            = "${PACKAGE_EXTRA_ARCHS:tune-armv9a} armv9-2a"
+BASE_LIB:tune-armv9-2a                       = "lib64"
diff --git a/meta/conf/machine/include/arm/arch-armv9-3a.inc b/meta/conf/machine/include/arm/arch-armv9-3a.inc
new file mode 100644
index 000000000000..c345f1532c48
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv9-3a.inc
@@ -0,0 +1,13 @@ 
+DEFAULTTUNE ?= "armv9-3a"
+
+TUNEVALID[armv9-3a] = "Enable instructions for ARMv9.3-a"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv9-3a', ' -march=armv9.3-a', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv9-3a', 'armv9-3a:', '', d)}"
+
+require conf/machine/include/arm/arch-armv9a.inc
+
+AVAILTUNES                                  += "armv9-3a"
+ARMPKGARCH:tune-armv9-3a                    ?= "armv9-3a"
+TUNE_FEATURES:tune-armv9-3a                  = "aarch64 armv9-3a"
+PACKAGE_EXTRA_ARCHS:tune-armv9-3a            = "${PACKAGE_EXTRA_ARCHS:tune-armv9a} armv9-3a"
+BASE_LIB:tune-armv9-3a                       = "lib64"