summaryrefslogtreecommitdiffstats
path: root/meta/conf/machine
diff options
context:
space:
mode:
Diffstat (limited to 'meta/conf/machine')
-rw-r--r--meta/conf/machine/include/arm/arch-arm.inc4
-rw-r--r--meta/conf/machine/include/arm/arch-arm64.inc5
-rw-r--r--meta/conf/machine/include/arm/arch-armv4.inc2
-rw-r--r--meta/conf/machine/include/arm/arch-armv5-dsp.inc1
-rw-r--r--meta/conf/machine/include/arm/arch-armv5.inc2
-rw-r--r--meta/conf/machine/include/arm/arch-armv6.inc2
-rw-r--r--meta/conf/machine/include/arm/arch-armv6m.inc2
-rw-r--r--meta/conf/machine/include/arm/arch-armv7a.inc3
-rw-r--r--meta/conf/machine/include/arm/arch-armv7em.inc17
-rw-r--r--meta/conf/machine/include/arm/arch-armv7m.inc17
-rw-r--r--meta/conf/machine/include/arm/arch-armv7r.inc22
-rw-r--r--meta/conf/machine/include/arm/arch-armv7ve.inc2
-rw-r--r--meta/conf/machine/include/arm/arch-armv8-1a.inc18
-rw-r--r--meta/conf/machine/include/arm/arch-armv8-1m-main.inc18
-rw-r--r--meta/conf/machine/include/arm/arch-armv8-2a.inc5
-rw-r--r--meta/conf/machine/include/arm/arch-armv8-3a.inc22
-rw-r--r--meta/conf/machine/include/arm/arch-armv8-4a.inc24
-rw-r--r--meta/conf/machine/include/arm/arch-armv8-5a.inc24
-rw-r--r--meta/conf/machine/include/arm/arch-armv8-6a.inc22
-rw-r--r--meta/conf/machine/include/arm/arch-armv8a.inc8
-rw-r--r--meta/conf/machine/include/arm/arch-armv8m-base.inc17
-rw-r--r--meta/conf/machine/include/arm/arch-armv8m-main.inc28
-rw-r--r--meta/conf/machine/include/arm/arch-armv8r.inc38
-rw-r--r--meta/conf/machine/include/arm/arch-armv9a.inc19
-rw-r--r--meta/conf/machine/include/arm/armv4/tune-arm920t.inc (renamed from meta/conf/machine/include/tune-arm920t.inc)2
-rw-r--r--meta/conf/machine/include/arm/armv4/tune-arm9tdmi.inc (renamed from meta/conf/machine/include/tune-arm9tdmi.inc)2
-rw-r--r--meta/conf/machine/include/arm/armv4/tune-ep9312.inc (renamed from meta/conf/machine/include/tune-ep9312.inc)0
-rw-r--r--meta/conf/machine/include/arm/armv4/tune-strongarm1100.inc (renamed from meta/conf/machine/include/tune-strongarm1100.inc)2
-rw-r--r--meta/conf/machine/include/arm/armv5/tune-arm926ejs.inc (renamed from meta/conf/machine/include/tune-arm926ejs.inc)0
-rw-r--r--meta/conf/machine/include/arm/armv5/tune-iwmmxt.inc (renamed from meta/conf/machine/include/tune-iwmmxt.inc)0
-rw-r--r--meta/conf/machine/include/arm/armv5/tune-xscale.inc (renamed from meta/conf/machine/include/tune-xscale.inc)0
-rw-r--r--meta/conf/machine/include/arm/armv6/tune-arm1136jf-s.inc (renamed from meta/conf/machine/include/tune-arm1136jf-s.inc)0
-rw-r--r--meta/conf/machine/include/arm/armv6/tune-arm1176jz-s.inc (renamed from meta/conf/machine/include/tune-arm1176jz-s.inc)0
-rw-r--r--meta/conf/machine/include/arm/armv6m/tune-cortexm0.inc (renamed from meta/conf/machine/include/tune-cortex-m0.inc)0
-rw-r--r--meta/conf/machine/include/arm/armv6m/tune-cortexm0plus.inc (renamed from meta/conf/machine/include/tune-cortex-m0plus.inc)0
-rw-r--r--meta/conf/machine/include/arm/armv6m/tune-cortexm1.inc14
-rw-r--r--meta/conf/machine/include/arm/armv7a/tune-cortexa15.inc (renamed from meta/conf/machine/include/tune-cortexa15.inc)2
-rw-r--r--meta/conf/machine/include/arm/armv7a/tune-cortexa17.inc (renamed from meta/conf/machine/include/tune-cortexa17.inc)2
-rw-r--r--meta/conf/machine/include/arm/armv7a/tune-cortexa5.inc (renamed from meta/conf/machine/include/tune-cortexa5.inc)2
-rw-r--r--meta/conf/machine/include/arm/armv7a/tune-cortexa7.inc (renamed from meta/conf/machine/include/tune-cortexa7.inc)2
-rw-r--r--meta/conf/machine/include/arm/armv7a/tune-cortexa8.inc (renamed from meta/conf/machine/include/tune-cortexa8.inc)2
-rw-r--r--meta/conf/machine/include/arm/armv7a/tune-cortexa9.inc (renamed from meta/conf/machine/include/tune-cortexa9.inc)2
-rw-r--r--meta/conf/machine/include/arm/armv7m/tune-cortexm3.inc14
-rw-r--r--meta/conf/machine/include/arm/armv7m/tune-cortexm4.inc14
-rw-r--r--meta/conf/machine/include/arm/armv7m/tune-cortexm7.inc14
-rw-r--r--meta/conf/machine/include/arm/armv7r/tune-cortexr4.inc14
-rw-r--r--meta/conf/machine/include/arm/armv7r/tune-cortexr4f.inc14
-rw-r--r--meta/conf/machine/include/arm/armv7r/tune-cortexr5.inc19
-rw-r--r--meta/conf/machine/include/arm/armv7r/tune-cortexr7.inc14
-rw-r--r--meta/conf/machine/include/arm/armv7r/tune-cortexr8.inc14
-rw-r--r--meta/conf/machine/include/arm/armv8-1m/tune-cortexm55.inc15
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa55.inc (renamed from meta/conf/machine/include/tune-cortexa55.inc)3
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa65.inc3
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa65ae.inc3
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa75-cortexa55.inc3
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa75.inc3
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc3
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa76.inc3
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa76ae.inc3
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa77.inc3
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa78.inc17
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa78ae.inc15
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa78c.inc15
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexx1.inc15
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexx1c.inc15
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-neoversee1.inc3
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-neoversen1.inc2
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-octeontx2.inc3
-rw-r--r--meta/conf/machine/include/arm/armv8-4a/tune-neoverse512tvb.inc15
-rw-r--r--meta/conf/machine/include/arm/armv8-4a/tune-neoversev1.inc15
-rw-r--r--meta/conf/machine/include/arm/armv8-m/tune-cortexm23.inc15
-rw-r--r--meta/conf/machine/include/arm/armv8-m/tune-cortexm33.inc18
-rw-r--r--meta/conf/machine/include/arm/armv8-m/tune-cortexm35p.inc18
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa32.inc (renamed from meta/conf/machine/include/tune-cortexa32.inc)3
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa34.inc3
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa35.inc (renamed from meta/conf/machine/include/tune-cortexa35.inc)3
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa53.inc (renamed from meta/conf/machine/include/tune-cortexa53.inc)3
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa57-cortexa53.inc (renamed from meta/conf/machine/include/tune-cortexa57-cortexa53.inc)3
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa57.inc (renamed from meta/conf/machine/include/tune-cortexa57.inc)3
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa72-cortexa53.inc (renamed from meta/conf/machine/include/tune-cortexa72-cortexa53.inc)3
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa72.inc18
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc3
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa53.inc (renamed from meta/conf/machine/include/tune-cortexa73-cortexa53.inc)3
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa73.inc11
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-thunderx.inc (renamed from meta/conf/machine/include/tune-thunderx.inc)0
-rw-r--r--meta/conf/machine/include/arm/armv8r/tune-cortexr52.inc20
-rw-r--r--meta/conf/machine/include/arm/armv8r/tune-cortexr82.inc15
-rw-r--r--meta/conf/machine/include/arm/armv9a/tune-cortexa510.inc15
-rw-r--r--meta/conf/machine/include/arm/armv9a/tune-cortexa710.inc15
-rw-r--r--meta/conf/machine/include/arm/armv9a/tune-cortexa715.inc15
-rw-r--r--meta/conf/machine/include/arm/armv9a/tune-cortexx2.inc15
-rw-r--r--meta/conf/machine/include/arm/armv9a/tune-cortexx3.inc15
-rw-r--r--meta/conf/machine/include/arm/armv9a/tune-neoversen2.inc21
-rw-r--r--meta/conf/machine/include/arm/armv9a/tune-neoversev2.inc15
-rw-r--r--meta/conf/machine/include/arm/feature-arm-crc.inc4
-rw-r--r--meta/conf/machine/include/arm/feature-arm-crypto.inc5
-rw-r--r--meta/conf/machine/include/arm/feature-arm-dsp.inc3
-rw-r--r--meta/conf/machine/include/arm/feature-arm-idiv.inc2
-rw-r--r--meta/conf/machine/include/arm/feature-arm-neon.inc5
-rw-r--r--meta/conf/machine/include/arm/feature-arm-simd.inc5
-rw-r--r--meta/conf/machine/include/arm/feature-arm-sve.inc8
-rw-r--r--meta/conf/machine/include/arm/feature-arm-vfp.inc3
-rw-r--r--meta/conf/machine/include/loongarch/arch-loongarch.inc7
-rw-r--r--meta/conf/machine/include/loongarch/qemuloongarch.inc35
-rw-r--r--meta/conf/machine/include/loongarch/tune-loongarch.inc13
-rw-r--r--meta/conf/machine/include/m68k/tune-mcf5441x.inc (renamed from meta/conf/machine/include/tune-mcf5441x.inc)0
-rw-r--r--meta/conf/machine/include/microblaze/feature-microblaze-versions.inc2
-rw-r--r--meta/conf/machine/include/microblaze/tune-microblaze.inc (renamed from meta/conf/machine/include/tune-microblaze.inc)0
-rw-r--r--meta/conf/machine/include/mips/arch-mips.inc2
-rw-r--r--meta/conf/machine/include/mips/feature-mips-mips16e.inc2
-rw-r--r--meta/conf/machine/include/mips/qemuboot-mips.inc (renamed from meta/conf/machine/include/qemuboot-mips.inc)0
-rw-r--r--meta/conf/machine/include/mips/tune-mips-24k.inc2
-rw-r--r--meta/conf/machine/include/mips/tune-mips-74k.inc2
-rw-r--r--meta/conf/machine/include/mips/tune-mips32.inc (renamed from meta/conf/machine/include/tune-mips32.inc)0
-rw-r--r--meta/conf/machine/include/mips/tune-mips32r2.inc (renamed from meta/conf/machine/include/tune-mips32r2.inc)2
-rw-r--r--meta/conf/machine/include/mips/tune-mips32r6.inc (renamed from meta/conf/machine/include/tune-mips32r6.inc)0
-rw-r--r--meta/conf/machine/include/mips/tune-mips64.inc3
-rw-r--r--meta/conf/machine/include/mips/tune-mips64r2.inc (renamed from meta/conf/machine/include/tune-mips64r2.inc)14
-rw-r--r--meta/conf/machine/include/mips/tune-mips64r6.inc (renamed from meta/conf/machine/include/tune-mips64r6.inc)0
-rw-r--r--meta/conf/machine/include/mips/tune-octeon.inc (renamed from meta/conf/machine/include/tune-octeon.inc)2
-rw-r--r--meta/conf/machine/include/powerpc/tune-power5.inc (renamed from meta/conf/machine/include/tune-power5.inc)0
-rw-r--r--meta/conf/machine/include/powerpc/tune-power6.inc (renamed from meta/conf/machine/include/tune-power6.inc)0
-rw-r--r--meta/conf/machine/include/powerpc/tune-power7.inc (renamed from meta/conf/machine/include/tune-power7.inc)0
-rw-r--r--meta/conf/machine/include/powerpc/tune-power8.inc31
-rw-r--r--meta/conf/machine/include/powerpc/tune-power9.inc (renamed from meta/conf/machine/include/tune-power9.inc)0
-rw-r--r--meta/conf/machine/include/powerpc/tune-ppc476.inc (renamed from meta/conf/machine/include/tune-ppc476.inc)0
-rw-r--r--meta/conf/machine/include/powerpc/tune-ppc603e.inc (renamed from meta/conf/machine/include/tune-ppc603e.inc)3
-rw-r--r--meta/conf/machine/include/powerpc/tune-ppc7400.inc (renamed from meta/conf/machine/include/tune-ppc7400.inc)3
-rw-r--r--meta/conf/machine/include/powerpc/tune-ppce300c2.inc (renamed from meta/conf/machine/include/tune-ppce300c2.inc)0
-rw-r--r--meta/conf/machine/include/powerpc/tune-ppce300c3.inc (renamed from meta/conf/machine/include/tune-ppce300c3.inc)3
-rw-r--r--meta/conf/machine/include/powerpc/tune-ppce500.inc (renamed from meta/conf/machine/include/tune-ppce500.inc)0
-rw-r--r--meta/conf/machine/include/powerpc/tune-ppce500mc.inc (renamed from meta/conf/machine/include/tune-ppce500mc.inc)3
-rw-r--r--meta/conf/machine/include/powerpc/tune-ppce500v2.inc (renamed from meta/conf/machine/include/tune-ppce500v2.inc)0
-rw-r--r--meta/conf/machine/include/powerpc/tune-ppce5500.inc (renamed from meta/conf/machine/include/tune-ppce5500.inc)3
-rw-r--r--meta/conf/machine/include/powerpc/tune-ppce6500.inc (renamed from meta/conf/machine/include/tune-ppce6500.inc)4
-rw-r--r--meta/conf/machine/include/qemu.inc4
-rw-r--r--meta/conf/machine/include/qemuboot-x86.inc14
-rw-r--r--meta/conf/machine/include/riscv/arch-riscv.inc2
-rw-r--r--meta/conf/machine/include/riscv/qemuriscv.inc10
-rw-r--r--meta/conf/machine/include/riscv/tune-riscv.inc10
-rw-r--r--meta/conf/machine/include/sh/tune-sh3.inc (renamed from meta/conf/machine/include/tune-sh3.inc)0
-rw-r--r--meta/conf/machine/include/sh/tune-sh4.inc (renamed from meta/conf/machine/include/tune-sh4.inc)2
-rw-r--r--meta/conf/machine/include/tune-cortexa72.inc13
-rw-r--r--meta/conf/machine/include/tune-mips64.inc3
-rw-r--r--meta/conf/machine/include/x86/qemuboot-x86.inc13
-rw-r--r--meta/conf/machine/include/x86/tune-atom.inc (renamed from meta/conf/machine/include/tune-atom.inc)2
-rw-r--r--meta/conf/machine/include/x86/tune-c3.inc (renamed from meta/conf/machine/include/tune-c3.inc)0
-rw-r--r--meta/conf/machine/include/x86/tune-core2.inc (renamed from meta/conf/machine/include/tune-core2.inc)8
-rw-r--r--meta/conf/machine/include/x86/tune-corei7.inc (renamed from meta/conf/machine/include/tune-corei7.inc)2
-rw-r--r--meta/conf/machine/include/x86/tune-i586-nlp.inc (renamed from meta/conf/machine/include/tune-i586-nlp.inc)0
-rw-r--r--meta/conf/machine/include/x86/tune-i586.inc (renamed from meta/conf/machine/include/tune-i586.inc)0
-rw-r--r--meta/conf/machine/include/x86/tune-i686.inc (renamed from meta/conf/machine/include/tune-i686.inc)2
-rw-r--r--meta/conf/machine/include/x86/tune-x86-64-v3.inc31
-rw-r--r--meta/conf/machine/include/x86/x86-base.inc (renamed from meta/conf/machine/include/x86-base.inc)3
-rw-r--r--meta/conf/machine/qemuarm.conf13
-rw-r--r--meta/conf/machine/qemuarm64.conf17
-rw-r--r--meta/conf/machine/qemuarmv5.conf11
-rw-r--r--meta/conf/machine/qemuloongarch64.conf11
-rw-r--r--meta/conf/machine/qemumips.conf4
-rw-r--r--meta/conf/machine/qemumips64.conf4
-rw-r--r--meta/conf/machine/qemuppc.conf2
-rw-r--r--meta/conf/machine/qemuppc64.conf11
-rw-r--r--meta/conf/machine/qemux86-64.conf5
-rw-r--r--meta/conf/machine/qemux86.conf5
164 files changed, 1095 insertions, 159 deletions
diff --git a/meta/conf/machine/include/arm/arch-arm.inc b/meta/conf/machine/include/arm/arch-arm.inc
index 869089051c..f1e92e19c6 100644
--- a/meta/conf/machine/include/arm/arch-arm.inc
+++ b/meta/conf/machine/include/arm/arch-arm.inc
@@ -14,3 +14,7 @@ TUNE_PKGARCH = "${ARMPKGARCH}${ARMPKGSFX_THUMB}${ARMPKGSFX_DSP}${ARMPKGSFX_EABI}
ABIEXTENSION = "eabi"
TARGET_FPU = "${@d.getVar('TUNE_CCARGS_MFLOAT') or 'soft'}"
+
+# Some -march settings need a +X option passed in. Since we cannot guarantee that any specified TUNE_CCARGS option is set in any order, we must hard code the order here to allow for it.
+TUNE_CCARGS_MARCH_OPTS ??= ""
+TUNE_CCARGS .= "${TUNE_CCARGS_MARCH}${TUNE_CCARGS_MARCH_OPTS}"
diff --git a/meta/conf/machine/include/arm/arch-arm64.inc b/meta/conf/machine/include/arm/arch-arm64.inc
index 0e2efb5a40..832d0000ac 100644
--- a/meta/conf/machine/include/arm/arch-arm64.inc
+++ b/meta/conf/machine/include/arm/arch-arm64.inc
@@ -37,3 +37,8 @@ TUNE_ARCH = "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', '${TUNE_ARCH_64}',
TUNE_PKGARCH = "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', '${TUNE_PKGARCH_64}', '${TUNE_PKGARCH_32}', d)}"
ABIEXTENSION = "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', '${ABIEXTENSION_64}', '${ABIEXTENSION_32}', d)}"
TARGET_FPU = "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', '${TARGET_FPU_64}', '${TARGET_FPU_32}', d)}"
+
+# Emit branch protection (PAC/BTI) instructions. On hardware that doesn't
+# support these they're meaningless NOP instructions, so there's very little
+# reason not to.
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', ' -mbranch-protection=standard', '', d)}"
diff --git a/meta/conf/machine/include/arm/arch-armv4.inc b/meta/conf/machine/include/arm/arch-armv4.inc
index 4f4a63b287..be5761fb20 100644
--- a/meta/conf/machine/include/arm/arch-armv4.inc
+++ b/meta/conf/machine/include/arm/arch-armv4.inc
@@ -2,7 +2,7 @@ DEFAULTTUNE ?= "armv4"
TUNEVALID[arm] = "Enable ARM instruction set"
TUNEVALID[armv4] = "Enable instructions for ARMv4"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv4', ' -march=armv4${ARMPKGSFX_THUMB}', '', d)}"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv4', ' -march=armv4${ARMPKGSFX_THUMB}', '', d)}"
# enable --fix-v4bx when we have armv4 in TUNE_FEATURES, but then disable it when we have also armv5 or thumb
# maybe we should extend bb.utils.contains to support check for any checkvalues in value, now it does
# checkvalues.issubset(val) which cannot be used for negative test of foo neither bar in value
diff --git a/meta/conf/machine/include/arm/arch-armv5-dsp.inc b/meta/conf/machine/include/arm/arch-armv5-dsp.inc
index d296e827cf..f3c749d722 100644
--- a/meta/conf/machine/include/arm/arch-armv5-dsp.inc
+++ b/meta/conf/machine/include/arm/arch-armv5-dsp.inc
@@ -1,3 +1,4 @@
+# Can't use feature-arm-dsp.inc, since that will add "+dsp", which isn't supported in GCC for ARMv5
ARMPKGSFX_DSP = "${@bb.utils.contains('TUNE_FEATURES', [ 'dsp' ], 'e', '', d)}"
TUNEVALID[dsp] = "ARM DSP functionality"
diff --git a/meta/conf/machine/include/arm/arch-armv5.inc b/meta/conf/machine/include/arm/arch-armv5.inc
index 5f46992098..6bb465e7b6 100644
--- a/meta/conf/machine/include/arm/arch-armv5.inc
+++ b/meta/conf/machine/include/arm/arch-armv5.inc
@@ -2,7 +2,7 @@ DEFAULTTUNE ?= "armv5"
TUNEVALID[armv5] = "Enable instructions for ARMv5"
TUNECONFLICTS[armv5] = "armv4"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv5', ' -march=armv5t${ARMPKGSFX_DSP}', '', d)}"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv5', ' -march=armv5t${ARMPKGSFX_DSP}', '', d)}"
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv5', 'armv5:', '', d)}"
require conf/machine/include/arm/arch-armv4.inc
diff --git a/meta/conf/machine/include/arm/arch-armv6.inc b/meta/conf/machine/include/arm/arch-armv6.inc
index 9d2e112b71..ef8d288ea7 100644
--- a/meta/conf/machine/include/arm/arch-armv6.inc
+++ b/meta/conf/machine/include/arm/arch-armv6.inc
@@ -2,7 +2,7 @@ DEFAULTTUNE ?= "armv6hf"
TUNEVALID[armv6] = "Enable instructions for ARMv6"
TUNECONFLICTS[armv6] = "armv4 armv5"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv6', ' -march=armv6', '', d)}"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv6', ' -march=armv6', '', d)}"
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv6', 'armv6:', '', d)}"
require conf/machine/include/arm/arch-armv5-dsp.inc
diff --git a/meta/conf/machine/include/arm/arch-armv6m.inc b/meta/conf/machine/include/arm/arch-armv6m.inc
index e7ca665a02..d6d6c7ed2d 100644
--- a/meta/conf/machine/include/arm/arch-armv6m.inc
+++ b/meta/conf/machine/include/arm/arch-armv6m.inc
@@ -7,7 +7,7 @@ TUNECONFLICTS[armv6m] = "armv4 armv5 armv6 armv7a"
# Use armv6s-m instead of armv6-m to avoid gcc bug "SVC is not permitted on this architecture".
# SVC is a valid instruction.
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv6m', ' -march=armv6s-m', '', d)}"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv6m', ' -march=armv6s-m', '', d)}"
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv6m', 'armv6m:', '', d)}"
require conf/machine/include/arm/arch-armv5.inc
diff --git a/meta/conf/machine/include/arm/arch-armv7a.inc b/meta/conf/machine/include/arm/arch-armv7a.inc
index 0f83cee37c..74fc8d11ab 100644
--- a/meta/conf/machine/include/arm/arch-armv7a.inc
+++ b/meta/conf/machine/include/arm/arch-armv7a.inc
@@ -3,11 +3,12 @@ ARM_INSTRUCTION_SET ?= "thumb"
TUNEVALID[armv7a] = "Enable instructions for ARMv7-a"
TUNECONFLICTS[armv7a] = "armv4 armv5 armv6 armv7"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7a', ' -march=armv7-a', '', d)}"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7a', ' -march=armv7-a', '', d)}"
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv7a', 'armv7a:', '', d)}"
require conf/machine/include/arm/arch-armv6.inc
require conf/machine/include/arm/feature-arm-neon.inc
+require conf/machine/include/arm/feature-arm-simd.inc
# Little Endian base configs
AVAILTUNES += "armv7a armv7at armv7a-vfpv3d16 armv7at-vfpv3d16 armv7a-vfpv3 armv7at-vfpv3 armv7a-vfpv4d16 armv7at-vfpv4d16 armv7a-neon armv7at-neon armv7a-neon-vfpv4 armv7at-neon-vfpv4"
diff --git a/meta/conf/machine/include/arm/arch-armv7em.inc b/meta/conf/machine/include/arm/arch-armv7em.inc
new file mode 100644
index 0000000000..f7608ea2ee
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv7em.inc
@@ -0,0 +1,17 @@
+#
+# Defaults for ARMv7e-m
+#
+DEFAULTTUNE ?= "armv7em"
+
+TUNEVALID[armv7em] = "Enable instructions for ARMv7e-m"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7em', ' -march=armv7e-m', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv7em', 'armv7em:', '', d)}"
+
+TUNECONFLICTS[armv7em] = "armv4 armv5 armv6 armv7a"
+
+require conf/machine/include/arm/arch-armv7m.inc
+
+AVAILTUNES += "armv7em"
+ARMPKGARCH:tune-armv7em = "armv7em"
+TUNE_FEATURES:tune-armv7em = "armv7em"
+PACKAGE_EXTRA_ARCHS:tune-armv7em = "armv7em"
diff --git a/meta/conf/machine/include/arm/arch-armv7m.inc b/meta/conf/machine/include/arm/arch-armv7m.inc
new file mode 100644
index 0000000000..2b69a3dfd1
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv7m.inc
@@ -0,0 +1,17 @@
+#
+# Defaults for ARMv7-m
+#
+DEFAULTTUNE ?= "armv7m"
+
+TUNEVALID[armv7m] = "Enable instructions for ARMv7-m"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7m', ' -march=armv7-m', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv7m', 'armv7m:', '', d)}"
+
+TUNECONFLICTS[armv7m] = "armv4 armv5 armv6 armv7a"
+
+require conf/machine/include/arm/arch-armv6m.inc
+
+AVAILTUNES += "armv7m"
+ARMPKGARCH:tune-armv7m = "armv7m"
+TUNE_FEATURES:tune-armv7m = "armv7m"
+PACKAGE_EXTRA_ARCHS:tune-armv7m = "armv7m"
diff --git a/meta/conf/machine/include/arm/arch-armv7r.inc b/meta/conf/machine/include/arm/arch-armv7r.inc
new file mode 100644
index 0000000000..fac26cf4ad
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv7r.inc
@@ -0,0 +1,22 @@
+#
+# Defaults for ARMv7-r
+#
+DEFAULTTUNE ?= "armv7r"
+
+TUNEVALID[armv7r] = "Enable instructions for ARMv7-r"
+TUNE_CCARGS_MARCH = "${@bb.utils.contains('TUNE_FEATURES', 'armv7r', ' -march=armv7-r', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv7r', 'armv7r:', '', d)}"
+
+TUNECONFLICTS[armv7r] = "armv4 armv5 armv6 armv7a"
+
+require conf/machine/include/arm/arch-armv6.inc
+require conf/machine/include/arm/feature-arm-idiv.inc
+require conf/machine/include/arm/feature-arm-neon.inc
+
+AVAILTUNES += "armv7r armv7r-vfpv3d16"
+ARMPKGARCH:tune-armv7r = "armv7r"
+ARMPKGARCH:tune-armv7r-vfpv3d16 = "armv7r"
+TUNE_FEATURES:tune-armv7r = "armv7r"
+TUNE_FEATURES:tune-armv7r-vfpv3d16 = "${TUNE_FEATURES:tune-armv7r} vfpv3d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7r = "armv7r"
+PACKAGE_EXTRA_ARCHS:tune-armv7r-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7r} tune-armv7r-fpv3d16"
diff --git a/meta/conf/machine/include/arm/arch-armv7ve.inc b/meta/conf/machine/include/arm/arch-armv7ve.inc
index b40c2ca8ad..8102ae6085 100644
--- a/meta/conf/machine/include/arm/arch-armv7ve.inc
+++ b/meta/conf/machine/include/arm/arch-armv7ve.inc
@@ -2,7 +2,7 @@ DEFAULTTUNE ?= "armv7vethf"
TUNEVALID[armv7ve] = "Enable instructions for ARMv7ve"
TUNECONFLICTS[armv7ve] = "armv4 armv5 armv6 armv7 armv7a"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7ve', ' -march=armv7ve', '', d)}"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7ve', ' -march=armv7ve', '', d)}"
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv7ve', 'armv7ve:', '', d)}"
require conf/machine/include/arm/arch-armv7a.inc
diff --git a/meta/conf/machine/include/arm/arch-armv8-1a.inc b/meta/conf/machine/include/arm/arch-armv8-1a.inc
new file mode 100644
index 0000000000..be8e814a39
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv8-1a.inc
@@ -0,0 +1,18 @@
+DEFAULTTUNE ?= "armv8-1a"
+
+TUNEVALID[armv8-1a] = "Enable instructions for ARMv8.1-a"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-1a', ' -march=armv8.1-a', '', d)}"
+# TUNE crypto will be handled by arch-armv8a.inc below
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-1a', 'armv8-1a:', '', d)}"
+
+require conf/machine/include/arm/arch-armv8a.inc
+
+AVAILTUNES += "armv8-1a armv8-1a-crypto"
+ARMPKGARCH:tune-armv8-1a ?= "armv8-1a"
+ARMPKGARCH:tune-armv8-1a-crypto ?= "armv8-1a"
+TUNE_FEATURES:tune-armv8-1a = "aarch64 armv8-1a"
+TUNE_FEATURES:tune-armv8-1a-crypto = "${TUNE_FEATURES:tune-armv8-1a} crypto"
+PACKAGE_EXTRA_ARCHS:tune-armv8-1a = "${PACKAGE_EXTRA_ARCHS:tune-armv8a} armv8-1a"
+PACKAGE_EXTRA_ARCHS:tune-armv8-1a-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8-1a} armv8-1a-crypto"
+BASE_LIB:tune-armv8-1a = "lib64"
+BASE_LIB:tune-armv8-1a-crypto = "lib64"
diff --git a/meta/conf/machine/include/arm/arch-armv8-1m-main.inc b/meta/conf/machine/include/arm/arch-armv8-1m-main.inc
new file mode 100644
index 0000000000..5b1bcb8f46
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv8-1m-main.inc
@@ -0,0 +1,18 @@
+#
+#
+# Defaults for ARMv8.1-M.main
+#
+DEFAULTTUNE ?= "armv8-1m-main"
+
+TUNEVALID[armv8-1m-main] = "Enable instructions for ARMv8.1-m.main"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-1m-main', ' -march=armv8.1-m.main', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-1m-main', 'armv8-1m-main:', '', d)}"
+
+TUNECONFLICTS[armv8-1m-main] = "armv4 armv5 armv6 armv7a"
+
+require conf/machine/include/arm/arch-armv8m-main.inc
+
+AVAILTUNES += "armv8-1m-main"
+ARMPKGARCH:tune-armv8-1m-main = "armv8-1m-main"
+TUNE_FEATURES:tune-armv8-1m-main = "armv8-1m-main"
+PACKAGE_EXTRA_ARCHS:tune-armv8-1m-main = "armv8-1m-main"
diff --git a/meta/conf/machine/include/arm/arch-armv8-2a.inc b/meta/conf/machine/include/arm/arch-armv8-2a.inc
index c84b1ecf24..2b5fae1406 100644
--- a/meta/conf/machine/include/arm/arch-armv8-2a.inc
+++ b/meta/conf/machine/include/arm/arch-armv8-2a.inc
@@ -1,11 +1,12 @@
DEFAULTTUNE ?= "armv8-2a"
-TUNEVALID[armv8-2a] = "Enable instructions for ARMv8-a"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-2a', ' -march=armv8.2-a', '', d)}"
+TUNEVALID[armv8-2a] = "Enable instructions for ARMv8.2-a"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-2a', ' -march=armv8.2-a', '', d)}"
# TUNE crypto will be handled by arch-armv8a.inc below
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-2a', 'armv8-2a:', '', d)}"
require conf/machine/include/arm/arch-armv8a.inc
+require conf/machine/include/arm/feature-arm-sve.inc
# Little Endian base configs
AVAILTUNES += "armv8-2a armv8-2a-crypto"
diff --git a/meta/conf/machine/include/arm/arch-armv8-3a.inc b/meta/conf/machine/include/arm/arch-armv8-3a.inc
new file mode 100644
index 0000000000..49493fb3b5
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv8-3a.inc
@@ -0,0 +1,22 @@
+DEFAULTTUNE ?= "armv8-3a"
+
+TUNEVALID[armv8-3a] = "Enable instructions for ARMv8.3-a"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-3a', ' -march=armv8.3-a', '', d)}"
+# TUNE crypto will be handled by arch-armv8a.inc below
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-3a', 'armv8-3a:', '', d)}"
+
+require conf/machine/include/arm/arch-armv8a.inc
+
+AVAILTUNES += "armv8-3a armv8-3a-crypto armv8-3a-crypto-sve"
+ARMPKGARCH:tune-armv8-3a ?= "armv8-3a"
+ARMPKGARCH:tune-armv8-3a-crypto ?= "armv8-3a"
+ARMPKGARCH:tune-armv8-3a-crypto-sve ?= "armv8-3a"
+TUNE_FEATURES:tune-armv8-3a = "aarch64 armv8-3a"
+TUNE_FEATURES:tune-armv8-3a-crypto = "${TUNE_FEATURES:tune-armv8-3a} crypto"
+TUNE_FEATURES:tune-armv8-3a-crypto-sve = "${TUNE_FEATURES:tune-armv8-3a-crypto} sve"
+PACKAGE_EXTRA_ARCHS:tune-armv8-3a = "${PACKAGE_EXTRA_ARCHS:tune-armv8a} armv8-3a"
+PACKAGE_EXTRA_ARCHS:tune-armv8-3a-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8-3a} armv8-3a-crypto"
+PACKAGE_EXTRA_ARCHS:tune-armv8-3a-crypto-sve = "${PACKAGE_EXTRA_ARCHS:tune-armv8-3a-crypto} armv8-3a-crypto-sve"
+BASE_LIB:tune-armv8-3a = "lib64"
+BASE_LIB:tune-armv8-3a-crypto = "lib64"
+BASE_LIB:tune-armv8-3a-crypto-sve = "lib64"
diff --git a/meta/conf/machine/include/arm/arch-armv8-4a.inc b/meta/conf/machine/include/arm/arch-armv8-4a.inc
new file mode 100644
index 0000000000..b61d50daa5
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv8-4a.inc
@@ -0,0 +1,24 @@
+DEFAULTTUNE ?= "armv8-4a"
+
+TUNEVALID[armv8-4a] = "Enable instructions for ARMv8.4-a"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-4a', ' -march=armv8.4-a', '', d)}"
+# TUNE crypto will be handled by arch-armv8a.inc below
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-4a', 'armv8-4a:', '', d)}"
+
+require conf/machine/include/arm/arch-armv8a.inc
+require conf/machine/include/arm/feature-arm-sve.inc
+
+# Little Endian base configs
+AVAILTUNES += "armv8-4a armv8-4a-crypto armv8-4a-crypto-sve"
+ARMPKGARCH:tune-armv8-4a ?= "armv8-4a"
+ARMPKGARCH:tune-armv8-4a-crypto ?= "armv8-4a"
+ARMPKGARCH:tune-armv8-4a-crypto-sve ?= "armv8-4a"
+TUNE_FEATURES:tune-armv8-4a = "aarch64 armv8-4a"
+TUNE_FEATURES:tune-armv8-4a-crypto = "${TUNE_FEATURES:tune-armv8-4a} crypto"
+TUNE_FEATURES:tune-armv8-4a-crypto-sve = "${TUNE_FEATURES:tune-armv8-4a-crypto} sve"
+PACKAGE_EXTRA_ARCHS:tune-armv8-4a = "${PACKAGE_EXTRA_ARCHS:tune-armv8a} armv8-4a"
+PACKAGE_EXTRA_ARCHS:tune-armv8-4a-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8-4a} armv8-4a-crypto"
+PACKAGE_EXTRA_ARCHS:tune-armv8-4a-crypto-sve = "${PACKAGE_EXTRA_ARCHS:tune-armv8-4a-crypto} armv8-4a-crypto-sve"
+BASE_LIB:tune-armv8-4a = "lib64"
+BASE_LIB:tune-armv8-4a-crypto = "lib64"
+BASE_LIB:tune-armv8-4a-crypto-sve = "lib64"
diff --git a/meta/conf/machine/include/arm/arch-armv8-5a.inc b/meta/conf/machine/include/arm/arch-armv8-5a.inc
new file mode 100644
index 0000000000..176bc9033c
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv8-5a.inc
@@ -0,0 +1,24 @@
+DEFAULTTUNE ?= "armv8-5a"
+
+TUNEVALID[armv8-5a] = "Enable instructions for ARMv8.5-a"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-5a', ' -march=armv8.5-a', '', d)}"
+# TUNE crypto will be handled by arch-armv8a.inc below
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-5a', 'armv8-5a:', '', d)}"
+
+require conf/machine/include/arm/arch-armv8a.inc
+require conf/machine/include/arm/feature-arm-sve.inc
+
+# Little Endian base configs
+AVAILTUNES += "armv8-5a armv8-5a-crypto armv8-5a-crypto-sve"
+ARMPKGARCH:tune-armv8-5a ?= "armv8-5a"
+ARMPKGARCH:tune-armv8-5a-crypto ?= "armv8-5a"
+ARMPKGARCH:tune-armv8-5a-crypto-sve ?= "armv8-5a"
+TUNE_FEATURES:tune-armv8-5a = "aarch64 armv8-5a"
+TUNE_FEATURES:tune-armv8-5a-crypto = "${TUNE_FEATURES:tune-armv8-5a} crypto"
+TUNE_FEATURES:tune-armv8-5a-crypto-sve = "${TUNE_FEATURES:tune-armv8-5a-crypto} sve"
+PACKAGE_EXTRA_ARCHS:tune-armv8-5a = "${PACKAGE_EXTRA_ARCHS:tune-armv8a} armv8-5a"
+PACKAGE_EXTRA_ARCHS:tune-armv8-5a-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8-5a} armv8-5a-crypto"
+PACKAGE_EXTRA_ARCHS:tune-armv8-5a-crypto-sve = "${PACKAGE_EXTRA_ARCHS:tune-armv8-5a-crypto} armv8-5a-crypto-sve"
+BASE_LIB:tune-armv8-5a = "lib64"
+BASE_LIB:tune-armv8-5a-crypto = "lib64"
+BASE_LIB:tune-armv8-5a-crypto-sve = "lib64"
diff --git a/meta/conf/machine/include/arm/arch-armv8-6a.inc b/meta/conf/machine/include/arm/arch-armv8-6a.inc
new file mode 100644
index 0000000000..27f85325ca
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv8-6a.inc
@@ -0,0 +1,22 @@
+DEFAULTTUNE ?= "armv8-6a"
+
+TUNEVALID[armv8-6a] = "Enable instructions for ARMv8.6-a"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-6a', ' -march=armv8.6-a', '', d)}"
+# TUNE crypto will be handled by arch-armv8a.inc below
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-6a', 'armv8-6a:', '', d)}"
+
+require conf/machine/include/arm/arch-armv8a.inc
+
+AVAILTUNES += "armv8-6a armv8-6a-crypto armv8-6a-crypto-sve"
+ARMPKGARCH:tune-armv8-6a ?= "armv8-6a"
+ARMPKGARCH:tune-armv8-6a-crypto ?= "armv8-6a"
+ARMPKGARCH:tune-armv8-6a-crypto-sve ?= "armv8-6a"
+TUNE_FEATURES:tune-armv8-6a = "aarch64 armv8-6a"
+TUNE_FEATURES:tune-armv8-6a-crypto = "${TUNE_FEATURES:tune-armv8-6a} crypto"
+TUNE_FEATURES:tune-armv8-6a-crypto-sve = "${TUNE_FEATURES:tune-armv8-6a-crypto} sve"
+PACKAGE_EXTRA_ARCHS:tune-armv8-6a = "${PACKAGE_EXTRA_ARCHS:tune-armv8a} armv8-6a"
+PACKAGE_EXTRA_ARCHS:tune-armv8-6a-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8-6a} armv8-6a-crypto"
+PACKAGE_EXTRA_ARCHS:tune-armv8-6a-crypto-sve = "${PACKAGE_EXTRA_ARCHS:tune-armv8-6a-crypto} armv8-6a-crypto-sve"
+BASE_LIB:tune-armv8-6a = "lib64"
+BASE_LIB:tune-armv8-6a-crypto = "lib64"
+BASE_LIB:tune-armv8-6a-crypto-sve = "lib64"
diff --git a/meta/conf/machine/include/arm/arch-armv8a.inc b/meta/conf/machine/include/arm/arch-armv8a.inc
index 819dffbeba..97c944dfa5 100644
--- a/meta/conf/machine/include/arm/arch-armv8a.inc
+++ b/meta/conf/machine/include/arm/arch-armv8a.inc
@@ -1,14 +1,12 @@
DEFAULTTUNE ?= "armv8a-crc"
TUNEVALID[armv8a] = "Enable instructions for ARMv8-a"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8a', ' -march=armv8-a', '', d)}"
-TUNEVALID[crc] = "Enable instructions for ARMv8-a Cyclic Redundancy Check (CRC)"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'crc', '+crc', '', d)}"
-TUNEVALID[crypto] = "Enable instructions for ARMv8-a cryptographic"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'crypto', '+crypto', '', d)}"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8a', ' -march=armv8-a', '', d)}"
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8a', 'armv8a:', '', d)}"
require conf/machine/include/arm/arch-arm64.inc
+require conf/machine/include/arm/feature-arm-crc.inc
+require conf/machine/include/arm/feature-arm-crypto.inc
# Little Endian base configs
AVAILTUNES += "armv8a armv8a-crc armv8a-crc-crypto armv8a-crypto"
diff --git a/meta/conf/machine/include/arm/arch-armv8m-base.inc b/meta/conf/machine/include/arm/arch-armv8m-base.inc
new file mode 100644
index 0000000000..ffee8cea80
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv8m-base.inc
@@ -0,0 +1,17 @@
+#
+# Defaults for ARMv8-m.base
+#
+DEFAULTTUNE ?= "armv8m-base"
+
+TUNEVALID[armv8m-base] = "Enable instructions for ARMv8-m.base"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8m-base', ' -march=armv8-m.base', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8m-base', 'armv8m-base:', '', d)}"
+
+TUNECONFLICTS[armv8m-base] = "armv4 armv5 armv6 armv7a"
+
+require conf/machine/include/arm/arch-armv7m.inc
+
+AVAILTUNES += "armv8m-base"
+ARMPKGARCH:tune-armv8m-base = "armv8m-base"
+TUNE_FEATURES:tune-armv8m-base = "armv8m-base"
+PACKAGE_EXTRA_ARCHS:tune-armv8m-base = "armv8m-base"
diff --git a/meta/conf/machine/include/arm/arch-armv8m-main.inc b/meta/conf/machine/include/arm/arch-armv8m-main.inc
new file mode 100644
index 0000000000..01bef35428
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv8m-main.inc
@@ -0,0 +1,28 @@
+#
+# Defaults for ARMv8-m.main
+#
+DEFAULTTUNE ?= "armv8m-main"
+
+require conf/machine/include/arm/arch-armv8m-base.inc
+require conf/machine/include/arm/feature-arm-dsp.inc
+require conf/machine/include/arm/feature-arm-neon.inc
+
+TUNEVALID[armv8m-main] = "Enable instructions for ARMv8-m.main"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8m-main', ' -march=armv8-m.main', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8m-main', 'armv8m-main:', '', d)}"
+
+TUNECONFLICTS[armv8m-main] = "armv4 armv5 armv6 armv7a"
+
+AVAILTUNES += "armv8m-main armv8m-maine armv8m-main-vfpv5spd16 armv8m-maine-vfpv5spd16"
+ARMPKGARCH:tune-armv8m-main = "armv8m-main"
+ARMPKGARCH:tune-armv8m-maine = "armv8m-main"
+ARMPKGARCH:tune-armv8m-main-vfpv5spd16 = "armv8m-main"
+ARMPKGARCH:tune-armv8m-maine-vfpv5spd16 = "armv8m-main"
+TUNE_FEATURES:tune-armv8m-main = "armv8m-main"
+TUNE_FEATURES:tune-armv8m-maine = "${TUNE_FEATURES:tune-armv8m-main} dsp"
+TUNE_FEATURES:tune-armv8m-main-vfpv5spd16 = "${TUNE_FEATURES:tune-armv8m-main} vfpv5spd16"
+TUNE_FEATURES:tune-armv8m-maine-vfpv5spd16 = "${TUNE_FEATURES:tune-armv8m-main-vfpv5spd16} dsp"
+PACKAGE_EXTRA_ARCHS:tune-armv8m-main = "armv8m-main"
+PACKAGE_EXTRA_ARCHS:tune-armv8m-maine = "${PACKAGE_EXTRA_ARCHS:tune-armv8m-main} armv8m-maine"
+PACKAGE_EXTRA_ARCHS:tune-armv8m-main-vfpv5spd16 = "${PACKAGE_EXTRA_ARCHS:tune-armv8m-main} armv8m-main-fpv5-spd16"
+PACKAGE_EXTRA_ARCHS:tune-armv8m-maine-vfpv5spd16 = "${PACKAGE_EXTRA_ARCHS:tune-armv8m-main} armv8m-maine-fpv5-spd16"
diff --git a/meta/conf/machine/include/arm/arch-armv8r.inc b/meta/conf/machine/include/arm/arch-armv8r.inc
new file mode 100644
index 0000000000..2fea8d2517
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv8r.inc
@@ -0,0 +1,38 @@
+#
+# Defaults for ARMv8-r
+#
+DEFAULTTUNE ?= "armv8r"
+
+TUNEVALID[armv8r] = "Enable instructions for ARMv8-r"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8r', ' -march=armv8-r', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8r', 'armv8r:', '', d)}"
+
+require conf/machine/include/arm/arch-arm64.inc
+require conf/machine/include/arm/feature-arm-crc.inc
+require conf/machine/include/arm/feature-arm-crypto.inc
+require conf/machine/include/arm/feature-arm-sve.inc
+
+# All ARMv8 has floating point hardware built in. Null it here to avoid any confusion for 32bit.
+TARGET_FPU_32 = ""
+
+AVAILTUNES += "armv8r armv8r-crc armv8r-crypto armv8r-simd armv8r-crc-crypto armv8r-crc-simd armv8r-crc-crypto-simd"
+ARMPKGARCH:tune-armv8r = "armv8r"
+ARMPKGARCH:tune-armv8r-crc = "armv8r"
+ARMPKGARCH:tune-armv8r-crypto = "armv8r"
+ARMPKGARCH:tune-armv8r-simd = "armv8r"
+ARMPKGARCH:tune-armv8r-crc-crypto = "armv8r"
+ARMPKGARCH:tune-armv8r-crc-simd = "armv8r"
+ARMPKGARCH:tune-armv8r-crc-crypto-simd = "armv8r"
+TUNE_FEATURES:tune-armv8r = "armv8r"
+TUNE_FEATURES:tune-armv8r-crc = "${TUNE_FEATURES:tune-armv8r} crc"
+TUNE_FEATURES:tune-armv8r-crypto = "${TUNE_FEATURES:tune-armv8r} crypto"
+TUNE_FEATURES:tune-armv8r-simd = "${TUNE_FEATURES:tune-armv8r} simd"
+TUNE_FEATURES:tune-armv8r-crc-crypto = "${TUNE_FEATURES:tune-armv8r-crc} crypto"
+TUNE_FEATURES:tune-armv8r-crc-simd = "${TUNE_FEATURES:tune-armv8r-crc} simd"
+TUNE_FEATURES:tune-armv8r-crc-crypto-simd = "${TUNE_FEATURES:tune-armv8r-crc-crypto} simd"
+PACKAGE_EXTRA_ARCHS:tune-armv8r = "armv8r"
+PACKAGE_EXTRA_ARCHS:tune-armv8r-crc = "${PACKAGE_EXTRA_ARCHS:tune-armv8r} armv8r-crc"
+PACKAGE_EXTRA_ARCHS:tune-armv8r-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8r} armv8r-crypto"
+PACKAGE_EXTRA_ARCHS:tune-armv8r-simd = "${PACKAGE_EXTRA_ARCHS:tune-armv8r} armv8r-simd"
+PACKAGE_EXTRA_ARCHS:tune-armv8r-crc-simd = "${PACKAGE_EXTRA_ARCHS:tune-armv8r-crc} armv8r-simd armv8r-crc-simd"
+PACKAGE_EXTRA_ARCHS:tune-armv8r-crc-crypto-simd = "${PACKAGE_EXTRA_ARCHS:tune-armv8r-crc-simd} armv8r-crc-crypto-simd"
diff --git a/meta/conf/machine/include/arm/arch-armv9a.inc b/meta/conf/machine/include/arm/arch-armv9a.inc
new file mode 100644
index 0000000000..e8d7c08a63
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv9a.inc
@@ -0,0 +1,19 @@
+DEFAULTTUNE ?= "armv9a"
+
+TUNEVALID[armv9a] = "Enable instructions for ARMv9-a"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv9a', ' -march=armv9-a', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv9a', 'armv9a:', '', d)}"
+
+require conf/machine/include/arm/arch-arm64.inc
+require conf/machine/include/arm/feature-arm-crypto.inc
+
+# Little Endian base configs
+AVAILTUNES += "armv9a armv9a-crypto"
+ARMPKGARCH:tune-armv9a ?= "armv9a"
+ARMPKGARCH:tune-armv9a-crypto ?= "armv9a"
+TUNE_FEATURES:tune-armv9a = "aarch64 armv9a"
+TUNE_FEATURES:tune-armv9a-crypto = "${TUNE_FEATURES:tune-armv9a} crypto"
+PACKAGE_EXTRA_ARCHS:tune-armv9a = "aarch64 armv9a"
+PACKAGE_EXTRA_ARCHS:tune-armv9a-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv9a} armv9a-crypto"
+BASE_LIB:tune-armv9a = "lib64"
+BASE_LIB:tune-armv9a-crypto = "lib64"
diff --git a/meta/conf/machine/include/tune-arm920t.inc b/meta/conf/machine/include/arm/armv4/tune-arm920t.inc
index 8a615792df..1b1cbdb5a7 100644
--- a/meta/conf/machine/include/tune-arm920t.inc
+++ b/meta/conf/machine/include/arm/armv4/tune-arm920t.inc
@@ -1,4 +1,4 @@
-DEFAULTTUNE ?= "armv4t"
+DEFAULTTUNE ?= "arm920t"
require conf/machine/include/arm/arch-armv4.inc
diff --git a/meta/conf/machine/include/tune-arm9tdmi.inc b/meta/conf/machine/include/arm/armv4/tune-arm9tdmi.inc
index 5ab286b576..78b890b43c 100644
--- a/meta/conf/machine/include/tune-arm9tdmi.inc
+++ b/meta/conf/machine/include/arm/armv4/tune-arm9tdmi.inc
@@ -1,4 +1,4 @@
-DEFAULTTUNE ?= "armv4t"
+DEFAULTTUNE ?= "arm9tdmi"
require conf/machine/include/arm/arch-armv4.inc
diff --git a/meta/conf/machine/include/tune-ep9312.inc b/meta/conf/machine/include/arm/armv4/tune-ep9312.inc
index 0d481d3888..0d481d3888 100644
--- a/meta/conf/machine/include/tune-ep9312.inc
+++ b/meta/conf/machine/include/arm/armv4/tune-ep9312.inc
diff --git a/meta/conf/machine/include/tune-strongarm1100.inc b/meta/conf/machine/include/arm/armv4/tune-strongarm1100.inc
index 6f5033bbc1..38ea9b7dd5 100644
--- a/meta/conf/machine/include/tune-strongarm1100.inc
+++ b/meta/conf/machine/include/arm/armv4/tune-strongarm1100.inc
@@ -1,4 +1,4 @@
-DEFAULTTUNE ?= "armv4"
+DEFAULTTUNE ?= "strongarm"
require conf/machine/include/arm/arch-armv4.inc
diff --git a/meta/conf/machine/include/tune-arm926ejs.inc b/meta/conf/machine/include/arm/armv5/tune-arm926ejs.inc
index 84c5084868..84c5084868 100644
--- a/meta/conf/machine/include/tune-arm926ejs.inc
+++ b/meta/conf/machine/include/arm/armv5/tune-arm926ejs.inc
diff --git a/meta/conf/machine/include/tune-iwmmxt.inc b/meta/conf/machine/include/arm/armv5/tune-iwmmxt.inc
index c584b47d18..c584b47d18 100644
--- a/meta/conf/machine/include/tune-iwmmxt.inc
+++ b/meta/conf/machine/include/arm/armv5/tune-iwmmxt.inc
diff --git a/meta/conf/machine/include/tune-xscale.inc b/meta/conf/machine/include/arm/armv5/tune-xscale.inc
index cc67dcd304..cc67dcd304 100644
--- a/meta/conf/machine/include/tune-xscale.inc
+++ b/meta/conf/machine/include/arm/armv5/tune-xscale.inc
diff --git a/meta/conf/machine/include/tune-arm1136jf-s.inc b/meta/conf/machine/include/arm/armv6/tune-arm1136jf-s.inc
index b848580948..b848580948 100644
--- a/meta/conf/machine/include/tune-arm1136jf-s.inc
+++ b/meta/conf/machine/include/arm/armv6/tune-arm1136jf-s.inc
diff --git a/meta/conf/machine/include/tune-arm1176jz-s.inc b/meta/conf/machine/include/arm/armv6/tune-arm1176jz-s.inc
index 21d77f081e..21d77f081e 100644
--- a/meta/conf/machine/include/tune-arm1176jz-s.inc
+++ b/meta/conf/machine/include/arm/armv6/tune-arm1176jz-s.inc
diff --git a/meta/conf/machine/include/tune-cortex-m0.inc b/meta/conf/machine/include/arm/armv6m/tune-cortexm0.inc
index aadc5326ce..aadc5326ce 100644
--- a/meta/conf/machine/include/tune-cortex-m0.inc
+++ b/meta/conf/machine/include/arm/armv6m/tune-cortexm0.inc
diff --git a/meta/conf/machine/include/tune-cortex-m0plus.inc b/meta/conf/machine/include/arm/armv6m/tune-cortexm0plus.inc
index a3cf3f0bd2..a3cf3f0bd2 100644
--- a/meta/conf/machine/include/tune-cortex-m0plus.inc
+++ b/meta/conf/machine/include/arm/armv6m/tune-cortexm0plus.inc
diff --git a/meta/conf/machine/include/arm/armv6m/tune-cortexm1.inc b/meta/conf/machine/include/arm/armv6m/tune-cortexm1.inc
new file mode 100644
index 0000000000..16661f3a26
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv6m/tune-cortexm1.inc
@@ -0,0 +1,14 @@
+#
+# Tune Settings for Cortex-M1
+#
+DEFAULTTUNE ?= "cortexm1"
+
+TUNEVALID[cortexm1] = "Enable Cortex-M1 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexm1', ' -mcpu=cortex-m1', '', d)}"
+
+require conf/machine/include/arm/arch-armv6m.inc
+
+AVAILTUNES += "cortexm1"
+ARMPKGARCH:tune-cortexm1 = "cortexm1"
+TUNE_FEATURES:tune-cortexm1 = "${TUNE_FEATURES:tune-armv6m} cortexm1"
+PACKAGE_EXTRA_ARCHS:tune-cortexm1 = "${PACKAGE_EXTRA_ARCHS:tune-armv6m} cortexm1"
diff --git a/meta/conf/machine/include/tune-cortexa15.inc b/meta/conf/machine/include/arm/armv7a/tune-cortexa15.inc
index 66bc124dc0..e827afb2a0 100644
--- a/meta/conf/machine/include/tune-cortexa15.inc
+++ b/meta/conf/machine/include/arm/armv7a/tune-cortexa15.inc
@@ -1,4 +1,4 @@
-DEFAULTTUNE ?= "armv7vethf-neon"
+DEFAULTTUNE ?= "cortexa15thf-neon"
require conf/machine/include/arm/arch-armv7ve.inc
diff --git a/meta/conf/machine/include/tune-cortexa17.inc b/meta/conf/machine/include/arm/armv7a/tune-cortexa17.inc
index 324673d440..3ad00b16d8 100644
--- a/meta/conf/machine/include/tune-cortexa17.inc
+++ b/meta/conf/machine/include/arm/armv7a/tune-cortexa17.inc
@@ -1,4 +1,4 @@
-DEFAULTTUNE ?= "armv7vethf-neon"
+DEFAULTTUNE ?= "cortexa17thf-neon"
require conf/machine/include/arm/arch-armv7ve.inc
diff --git a/meta/conf/machine/include/tune-cortexa5.inc b/meta/conf/machine/include/arm/armv7a/tune-cortexa5.inc
index 817eb166d6..0de5aadaaa 100644
--- a/meta/conf/machine/include/tune-cortexa5.inc
+++ b/meta/conf/machine/include/arm/armv7a/tune-cortexa5.inc
@@ -1,4 +1,4 @@
-DEFAULTTUNE ?= "armv7athf-neon"
+DEFAULTTUNE ?= "cortexa5thf-neon"
require conf/machine/include/arm/arch-armv7a.inc
diff --git a/meta/conf/machine/include/tune-cortexa7.inc b/meta/conf/machine/include/arm/armv7a/tune-cortexa7.inc
index 5384369b59..1ada527d8b 100644
--- a/meta/conf/machine/include/tune-cortexa7.inc
+++ b/meta/conf/machine/include/arm/armv7a/tune-cortexa7.inc
@@ -1,4 +1,4 @@
-DEFAULTTUNE ?= "armv7vethf-neon"
+DEFAULTTUNE ?= "cortexa7thf-neon"
require conf/machine/include/arm/arch-armv7ve.inc
diff --git a/meta/conf/machine/include/tune-cortexa8.inc b/meta/conf/machine/include/arm/armv7a/tune-cortexa8.inc
index e27002a29a..952302afa2 100644
--- a/meta/conf/machine/include/tune-cortexa8.inc
+++ b/meta/conf/machine/include/arm/armv7a/tune-cortexa8.inc
@@ -1,4 +1,4 @@
-DEFAULTTUNE ?= "armv7athf-neon"
+DEFAULTTUNE ?= "cortexa8thf-neon"
require conf/machine/include/arm/arch-armv7a.inc
diff --git a/meta/conf/machine/include/tune-cortexa9.inc b/meta/conf/machine/include/arm/armv7a/tune-cortexa9.inc
index d046a11a51..4b4a52884d 100644
--- a/meta/conf/machine/include/tune-cortexa9.inc
+++ b/meta/conf/machine/include/arm/armv7a/tune-cortexa9.inc
@@ -1,4 +1,4 @@
-DEFAULTTUNE ?= "armv7athf-neon"
+DEFAULTTUNE ?= "cortexa9thf-neon"
require conf/machine/include/arm/arch-armv7a.inc
diff --git a/meta/conf/machine/include/arm/armv7m/tune-cortexm3.inc b/meta/conf/machine/include/arm/armv7m/tune-cortexm3.inc
new file mode 100644
index 0000000000..a6cb566387
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv7m/tune-cortexm3.inc
@@ -0,0 +1,14 @@
+#
+# Tune Settings for Cortex-M3
+#
+DEFAULTTUNE ?= "cortexm3"
+
+TUNEVALID[cortexm3] = "Enable Cortex-M3 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexm3', ' -mcpu=cortex-m3', '', d)}"
+
+require conf/machine/include/arm/arch-armv7m.inc
+
+AVAILTUNES += "cortexm3"
+ARMPKGARCH:tune-cortexm3 = "cortexm3"
+TUNE_FEATURES:tune-cortexm3 = "${TUNE_FEATURES:tune-armv7m} cortexm3"
+PACKAGE_EXTRA_ARCHS:tune-cortexm3 = "${PACKAGE_EXTRA_ARCHS:tune-armv7m} cortexm3"
diff --git a/meta/conf/machine/include/arm/armv7m/tune-cortexm4.inc b/meta/conf/machine/include/arm/armv7m/tune-cortexm4.inc
new file mode 100644
index 0000000000..e86622ff3d
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv7m/tune-cortexm4.inc
@@ -0,0 +1,14 @@
+#
+# Tune Settings for Cortex-M4
+#
+DEFAULTTUNE ?= "cortexm4"
+
+TUNEVALID[cortexm4] = "Enable Cortex-M4 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexm4', ' -mcpu=cortex-m4', '', d)}"
+
+require conf/machine/include/arm/arch-armv7em.inc
+
+AVAILTUNES += "cortexm4"
+ARMPKGARCH:tune-cortexm4 = "cortexm4"
+TUNE_FEATURES:tune-cortexm4 = "${TUNE_FEATURES:tune-armv7em} cortexm4"
+PACKAGE_EXTRA_ARCHS:tune-cortexm4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7em} cortexm4"
diff --git a/meta/conf/machine/include/arm/armv7m/tune-cortexm7.inc b/meta/conf/machine/include/arm/armv7m/tune-cortexm7.inc
new file mode 100644
index 0000000000..6434ec6398
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv7m/tune-cortexm7.inc
@@ -0,0 +1,14 @@
+#
+# Tune Settings for Cortex-M7
+#
+DEFAULTTUNE ?= "cortexm7"
+
+TUNEVALID[cortexm7] = "Enable Cortex-M7 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexm7', ' -mcpu=cortex-m7', '', d)}"
+
+require conf/machine/include/arm/arch-armv7em.inc
+
+AVAILTUNES += "cortexm7"
+ARMPKGARCH:tune-cortexm7 = "cortexm7"
+TUNE_FEATURES:tune-cortexm7 = "${TUNE_FEATURES:tune-armv7em} cortexm7"
+PACKAGE_EXTRA_ARCHS:tune-cortexm7 = "${PACKAGE_EXTRA_ARCHS:tune-armv7em} cortexm7"
diff --git a/meta/conf/machine/include/arm/armv7r/tune-cortexr4.inc b/meta/conf/machine/include/arm/armv7r/tune-cortexr4.inc
new file mode 100644
index 0000000000..0eed729630
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv7r/tune-cortexr4.inc
@@ -0,0 +1,14 @@
+#
+# Tune Settings for Cortex-R4
+#
+DEFAULTTUNE ?= "cortexr4"
+
+TUNEVALID[cortexr4] = "Enable Cortex-R4 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexr4', ' -mcpu=cortex-r4', '', d)}"
+
+require conf/machine/include/arm/arch-armv7r.inc
+
+AVAILTUNES += "cortexr4"
+ARMPKGARCH:tune-cortexr4 = "cortexr4"
+TUNE_FEATURES:tune-cortexr4 = "${TUNE_FEATURES:tune-armv7r} cortexr4"
+PACKAGE_EXTRA_ARCHS:tune-cortexr4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7r} cortexr4"
diff --git a/meta/conf/machine/include/arm/armv7r/tune-cortexr4f.inc b/meta/conf/machine/include/arm/armv7r/tune-cortexr4f.inc
new file mode 100644
index 0000000000..0712b3ab1b
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv7r/tune-cortexr4f.inc
@@ -0,0 +1,14 @@
+#
+# Tune Settings for Cortex-R4F
+#
+DEFAULTTUNE ?= "cortexr4f"
+
+TUNEVALID[cortexr4f] = "Enable Cortex-R4F specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexr4f', ' -mcpu=cortex-r4f', '', d)}"
+
+require conf/machine/include/arm/arch-armv7r.inc
+
+AVAILTUNES += "cortexr4f"
+ARMPKGARCH:tune-cortexr4f = "cortexr4f"
+TUNE_FEATURES:tune-cortexr4f = "${TUNE_FEATURES:tune-armv7r-vfpv3d16} cortexr4f"
+PACKAGE_EXTRA_ARCHS:tune-cortexr4f = "${PACKAGE_EXTRA_ARCHS:tune-armv7r-vfpv3d16} cortexr4f-vfpv3d16"
diff --git a/meta/conf/machine/include/arm/armv7r/tune-cortexr5.inc b/meta/conf/machine/include/arm/armv7r/tune-cortexr5.inc
new file mode 100644
index 0000000000..4c8985292b
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv7r/tune-cortexr5.inc
@@ -0,0 +1,19 @@
+#
+# Tune Settings for Cortex-R5
+#
+DEFAULTTUNE ?= "cortexr5"
+
+TUNEVALID[cortexr5] = "Enable Cortex-R5 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexr5', ' -mcpu=cortex-r5', '', d)}"
+
+require conf/machine/include/arm/arch-armv7r.inc
+
+AVAILTUNES += "cortexr5"
+ARMPKGARCH:tune-cortexr5 = "cortexr5"
+TUNE_FEATURES:tune-cortexr5 = "${TUNE_FEATURES:tune-armv7r-vfpv3d16} cortexr5 idiv"
+PACKAGE_EXTRA_ARCHS:tune-cortexr5 = "${PACKAGE_EXTRA_ARCHS:tune-armv7r-vfpv3d16} cortexr5-vfpv3d16"
+
+AVAILTUNES += "cortexr5hf"
+ARMPKGARCH:tune-cortexr5hf = "cortexr5"
+TUNE_FEATURES:tune-cortexr5hf = "${TUNE_FEATURES:tune-cortexr5} callconvention-hard"
+PACKAGE_EXTRA_ARCHS:tune-cortexr5hf = "cortexr5hf-vfpv3d16"
diff --git a/meta/conf/machine/include/arm/armv7r/tune-cortexr7.inc b/meta/conf/machine/include/arm/armv7r/tune-cortexr7.inc
new file mode 100644
index 0000000000..bfae1f0075
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv7r/tune-cortexr7.inc
@@ -0,0 +1,14 @@
+#
+# Tune Settings for Cortex-R7
+#
+DEFAULTTUNE ?= "cortexr7"
+
+TUNEVALID[cortexr7] = "Enable Cortex-R7 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexr7', ' -mcpu=cortex-r7', '', d)}"
+
+require conf/machine/include/arm/arch-armv7r.inc
+
+AVAILTUNES += "cortexr7"
+ARMPKGARCH:tune-cortexr7 = "cortexr7"
+TUNE_FEATURES:tune-cortexr7 = "${TUNE_FEATURES:tune-armv7r-vfpv3d16} cortexr7 idiv"
+PACKAGE_EXTRA_ARCHS:tune-cortexr7 = "${PACKAGE_EXTRA_ARCHS:tune-armv7r-vfpv3d16} cortexr7-vfpv3d16"
diff --git a/meta/conf/machine/include/arm/armv7r/tune-cortexr8.inc b/meta/conf/machine/include/arm/armv7r/tune-cortexr8.inc
new file mode 100644
index 0000000000..7fb824f6e9
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv7r/tune-cortexr8.inc
@@ -0,0 +1,14 @@
+#
+# Tune Settings for Cortex-R8
+#
+DEFAULTTUNE ?= "cortexr8"
+
+TUNEVALID[cortexr8] = "Enable Cortex-R8 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexr8', ' -mcpu=cortex-r8', '', d)}"
+
+require conf/machine/include/arm/arch-armv7r.inc
+
+AVAILTUNES += "cortexr8"
+ARMPKGARCH:tune-cortexr8 = "cortexr8"
+TUNE_FEATURES:tune-cortexr8 = "${TUNE_FEATURES:tune-armv7r-vfpv3d16} cortexr8 idiv"
+PACKAGE_EXTRA_ARCHS:tune-cortexr8 = "${PACKAGE_EXTRA_ARCHS:tune-armv7r-vfpv3d16} cortexr8-vfpv3d16"
diff --git a/meta/conf/machine/include/arm/armv8-1m/tune-cortexm55.inc b/meta/conf/machine/include/arm/armv8-1m/tune-cortexm55.inc
new file mode 100644
index 0000000000..0a115be8a4
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-1m/tune-cortexm55.inc
@@ -0,0 +1,15 @@
+#
+# Tune Settings for Cortex-M55
+#
+DEFAULTTUNE ?= "cortexm55"
+
+TUNEVALID[cortexm55] = "Enable Cortex-M55 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexm55', ' -mcpu=cortex-m55', '', d)}"
+
+require conf/machine/include/arm/arch-armv8-1m-main.inc
+
+AVAILTUNES += "cortexm55"
+ARMPKGARCH:tune-cortexm55 = "cortexm55"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexm55 = "cortexm55"
+PACKAGE_EXTRA_ARCHS:tune-cortexm55 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-1m-main} cortexm55"
diff --git a/meta/conf/machine/include/tune-cortexa55.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa55.inc
index d130b4b90a..5e63b45ae0 100644
--- a/meta/conf/machine/include/tune-cortexa55.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa55.inc
@@ -8,6 +8,7 @@ require conf/machine/include/arm/arch-armv8-2a.inc
# Little Endian base configs
AVAILTUNES += "cortexa55"
ARMPKGARCH:tune-cortexa55 = "cortexa55"
-TUNE_FEATURES:tune-cortexa55 = "${TUNE_FEATURES:tune-armv8-2a-crypto} cortexa55"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexa55 = "aarch64 crypto cortexa55"
PACKAGE_EXTRA_ARCHS:tune-cortexa55 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} cortexa55"
BASE_LIB:tune-cortexa55 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa65.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa65.inc
index c7e86887b5..ba96d0452e 100644
--- a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa65.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa65.inc
@@ -11,6 +11,7 @@ require conf/machine/include/arm/arch-armv8-2a.inc
# Little Endian base configs
AVAILTUNES += "cortexa65"
ARMPKGARCH:tune-cortexa65 = "cortexa65"
-TUNE_FEATURES:tune-cortexa65 = "${TUNE_FEATURES:tune-armv8-2a-crypto} cortexa65"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexa65 = "aarch64 crypto cortexa65"
PACKAGE_EXTRA_ARCHS:tune-cortexa65 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} cortexa65"
BASE_LIB:tune-cortexa65 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa65ae.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa65ae.inc
index dad6d1b174..cc92147441 100644
--- a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa65ae.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa65ae.inc
@@ -11,6 +11,7 @@ require conf/machine/include/arm/arch-armv8-2a.inc
# Little Endian base configs
AVAILTUNES += "cortexa65ae"
ARMPKGARCH:tune-cortexa65ae = "cortexa65ae"
-TUNE_FEATURES:tune-cortexa65ae = "${TUNE_FEATURES:tune-armv8-2a-crypto} cortexa65ae"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexa65ae = "aarch64 crypto cortexa65ae"
PACKAGE_EXTRA_ARCHS:tune-cortexa65ae = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} cortexa65ae"
BASE_LIB:tune-cortexa65ae = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75-cortexa55.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75-cortexa55.inc
index 3a47e8278d..e18b2cb6e0 100644
--- a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75-cortexa55.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75-cortexa55.inc
@@ -12,7 +12,8 @@ require conf/machine/include/arm/arch-armv8-2a.inc
AVAILTUNES += "cortexa75-cortexa55 cortexa75-cortexa55-crypto"
ARMPKGARCH:tune-cortexa75-cortexa55 = "cortexa75-cortexa55"
ARMPKGARCH:tune-cortexa75-cortexa55-crypto = "cortexa75-cortexa55-crypto"
-TUNE_FEATURES:tune-cortexa75-cortexa55 = "${TUNE_FEATURES:tune-armv8-2a} cortexa75-cortexa55"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexa75-cortexa55 = "aarch64 cortexa75-cortexa55"
TUNE_FEATURES:tune-cortexa75-cortexa55-crypto = "${TUNE_FEATURES:tune-cortexa75-cortexa55} crypto"
PACKAGE_EXTRA_ARCHS:tune-cortexa75-cortexa55 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a} cortexa75-cortexa55"
PACKAGE_EXTRA_ARCHS:tune-cortexa75-cortexa55-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} cortexa75-cortexa55 cortexa75-cortexa55-crypto"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75.inc
index 2d9a1159f1..453be2e6fd 100644
--- a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75.inc
@@ -11,6 +11,7 @@ require conf/machine/include/arm/arch-armv8-2a.inc
# Little Endian base configs
AVAILTUNES += "cortexa75"
ARMPKGARCH:tune-cortexa75 = "cortexa75"
-TUNE_FEATURES:tune-cortexa75 = "${TUNE_FEATURES:tune-armv8-2a-crypto} cortexa75"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexa75 = "aarch64 crypto cortexa75"
PACKAGE_EXTRA_ARCHS:tune-cortexa75 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} cortexa75"
BASE_LIB:tune-cortexa75 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc
index f4c99ad6bb..7daf9d91a8 100644
--- a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc
@@ -12,7 +12,8 @@ require conf/machine/include/arm/arch-armv8-2a.inc
AVAILTUNES += "cortexa76-cortexa55 cortexa76-cortexa55-crypto"
ARMPKGARCH:tune-cortexa76-cortexa55 = "cortexa76-cortexa55"
ARMPKGARCH:tune-cortexa76-cortexa55-crypto = "cortexa76-cortexa55-crypto"
-TUNE_FEATURES:tune-cortexa76-cortexa55 = "${TUNE_FEATURES:tune-armv8-2a} cortexa76-cortexa55"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexa76-cortexa55 = "aarch64 cortexa76-cortexa55"
TUNE_FEATURES:tune-cortexa76-cortexa55-crypto = "${TUNE_FEATURES:tune-cortexa76-cortexa55} crypto"
PACKAGE_EXTRA_ARCHS:tune-cortexa76-cortexa55 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a} cortexa76-cortexa55"
PACKAGE_EXTRA_ARCHS:tune-cortexa76-cortexa55-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} cortexa76-cortexa55 cortexa76-cortexa55-crypto"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76.inc
index 0dfdb8c5e4..14ed81214d 100644
--- a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76.inc
@@ -11,6 +11,7 @@ require conf/machine/include/arm/arch-armv8-2a.inc
# Little Endian base configs
AVAILTUNES += "cortexa76"
ARMPKGARCH:tune-cortexa76 = "cortexa76"
-TUNE_FEATURES:tune-cortexa76 = "${TUNE_FEATURES:tune-armv8-2a-crypto} cortexa76"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexa76 = "aarch64 crypto cortexa76"
PACKAGE_EXTRA_ARCHS:tune-cortexa76 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} cortexa76"
BASE_LIB:tune-cortexa76 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76ae.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76ae.inc
index b2863dca68..191863bac8 100644
--- a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76ae.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76ae.inc
@@ -11,6 +11,7 @@ require conf/machine/include/arm/arch-armv8-2a.inc
# Little Endian base configs
AVAILTUNES += "cortexa76ae"
ARMPKGARCH:tune-cortexa76ae = "cortexa76ae"
-TUNE_FEATURES:tune-cortexa76ae = "${TUNE_FEATURES:tune-armv8-2a-crypto} cortexa76ae"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexa76ae = "aarch64 crypto cortexa76ae"
PACKAGE_EXTRA_ARCHS:tune-cortexa76ae = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} cortexa76ae"
BASE_LIB:tune-cortexa76ae = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa77.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa77.inc
index 654b1f6323..1522fd6abd 100644
--- a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa77.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa77.inc
@@ -11,6 +11,7 @@ require conf/machine/include/arm/arch-armv8-2a.inc
# Little Endian base configs
AVAILTUNES += "cortexa77"
ARMPKGARCH:tune-cortexa77 = "cortexa77"
-TUNE_FEATURES:tune-cortexa77 = "${TUNE_FEATURES:tune-armv8-2a-crypto} cortexa77"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexa77 = "aarch64 crypto cortexa77"
PACKAGE_EXTRA_ARCHS:tune-cortexa77 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} cortexa77"
BASE_LIB:tune-cortexa77 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa78.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa78.inc
new file mode 100644
index 0000000000..198b94c679
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa78.inc
@@ -0,0 +1,17 @@
+#
+# Tune Settings for Cortex-A78
+#
+DEFAULTTUNE ?= "cortexa78"
+
+TUNEVALID[cortexa78] = "Enable Cortex-A78 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa78', ' -mcpu=cortex-a78', '', d)}"
+
+require conf/machine/include/arm/arch-armv8-2a.inc
+
+# Little Endian base configs
+AVAILTUNES += "cortexa78"
+ARMPKGARCH:tune-cortexa78 = "cortexa78"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexa78 = "aarch64 crypto cortexa78"
+PACKAGE_EXTRA_ARCHS:tune-cortexa78 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} cortexa78"
+BASE_LIB:tune-cortexa78 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa78ae.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa78ae.inc
new file mode 100644
index 0000000000..fe68bda9a0
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa78ae.inc
@@ -0,0 +1,15 @@
+#
+# Tune Settings for cortex-a78ae
+#
+DEFAULTTUNE ?= "cortexa78ae"
+
+TUNEVALID[cortexa78ae] = "Enable cortex-a78ae specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa78ae', ' -mcpu=cortex-a78ae', '', d)}"
+
+require conf/machine/include/arm/arch-armv8-2a.inc
+
+AVAILTUNES += "cortexa78ae"
+ARMPKGARCH:tune-cortexa78ae = "cortexa78ae"
+TUNE_FEATURES:tune-cortexa78ae = "aarch64 crypto cortexa78ae"
+PACKAGE_EXTRA_ARCHS:tune-cortexa78ae = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} cortexa78ae"
+BASE_LIB:tune-cortexa78ae = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa78c.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa78c.inc
new file mode 100644
index 0000000000..cb1fe91dfc
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa78c.inc
@@ -0,0 +1,15 @@
+#
+# Tune Settings for cortex-a78c
+#
+DEFAULTTUNE ?= "cortexa78c"
+
+TUNEVALID[cortexa78c] = "Enable cortex-a78c specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa78c', ' -mcpu=cortex-a78c', '', d)}"
+
+require conf/machine/include/arm/arch-armv8-2a.inc
+
+AVAILTUNES += "cortexa78c"
+ARMPKGARCH:tune-cortexa78c = "cortexa78c"
+TUNE_FEATURES:tune-cortexa78c = "aarch64 crypto cortexa78c"
+PACKAGE_EXTRA_ARCHS:tune-cortexa78c = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} cortexa78c"
+BASE_LIB:tune-cortexa78c = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexx1.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexx1.inc
new file mode 100644
index 0000000000..0a99156e62
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexx1.inc
@@ -0,0 +1,15 @@
+#
+# Tune Settings for cortex-x1
+#
+DEFAULTTUNE ?= "cortexx1"
+
+TUNEVALID[cortexx1] = "Enable cortex-x1 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexx1', ' -mcpu=cortex-x1', '', d)}"
+
+require conf/machine/include/arm/arch-armv8-2a.inc
+
+AVAILTUNES += "cortexx1"
+ARMPKGARCH:tune-cortexx1 = "cortexx1"
+TUNE_FEATURES:tune-cortexx1 = "aarch64 crypto cortexx1"
+PACKAGE_EXTRA_ARCHS:tune-cortexx1 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} cortexx1"
+BASE_LIB:tune-cortexx1 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexx1c.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexx1c.inc
new file mode 100644
index 0000000000..2a16d1695d
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexx1c.inc
@@ -0,0 +1,15 @@
+#
+# Tune Settings for cortex-x1c
+#
+DEFAULTTUNE ?= "cortexx1c"
+
+TUNEVALID[cortexx1c] = "Enable cortex-x1c specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexx1c', ' -mcpu=cortex-x1c', '', d)}"
+
+require conf/machine/include/arm/arch-armv8-2a.inc
+
+AVAILTUNES += "cortexx1c"
+ARMPKGARCH:tune-cortexx1c = "cortexx1c"
+TUNE_FEATURES:tune-cortexx1c = "aarch64 crypto cortexx1c"
+PACKAGE_EXTRA_ARCHS:tune-cortexx1c = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} cortexx1c"
+BASE_LIB:tune-cortexx1c = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-neoversee1.inc b/meta/conf/machine/include/arm/armv8-2a/tune-neoversee1.inc
index 15ed595bde..e906cf965c 100644
--- a/meta/conf/machine/include/arm/armv8-2a/tune-neoversee1.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-neoversee1.inc
@@ -11,6 +11,7 @@ require conf/machine/include/arm/arch-armv8-2a.inc
# Little Endian base configs
AVAILTUNES += "neoversee1"
ARMPKGARCH:tune-neoversee1 = "neoversee1"
-TUNE_FEATURES:tune-neoversee1 = "${TUNE_FEATURES:tune-armv8-2a-crypto} neoversee1"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-neoversee1 = "aarch64 crypto neoversee1"
PACKAGE_EXTRA_ARCHS:tune-neoversee1 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} neoversee1"
BASE_LIB:tune-neoversee1 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-neoversen1.inc b/meta/conf/machine/include/arm/armv8-2a/tune-neoversen1.inc
index 9d181ef4d5..55f054713f 100644
--- a/meta/conf/machine/include/arm/armv8-2a/tune-neoversen1.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-neoversen1.inc
@@ -12,6 +12,6 @@ require conf/machine/include/arm/arch-armv8-2a.inc
# Little Endian base configs
AVAILTUNES += "neoversen1"
ARMPKGARCH:tune-neoversen1 = "neoversen1"
-TUNE_FEATURES:tune-neoversen1 = "${TUNE_FEATURES:tune-armv8-2a-crypto} neoversen1"
+TUNE_FEATURES:tune-neoversen1 = "aarch64 crypto neoversen1"
PACKAGE_EXTRA_ARCHS:tune-neoversen1 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} neoversen1"
BASE_LIB:tune-neoversen1 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-octeontx2.inc b/meta/conf/machine/include/arm/armv8-2a/tune-octeontx2.inc
index 2cac70ea52..e9d7a59c51 100644
--- a/meta/conf/machine/include/arm/armv8-2a/tune-octeontx2.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-octeontx2.inc
@@ -8,6 +8,7 @@ require conf/machine/include/arm/arch-armv8-2a.inc
# Little Endian base configs
AVAILTUNES += "octeontx2"
ARMPKGARCH:tune-octeontx2 = "octeontx2"
-TUNE_FEATURES:tune-octeontx2 = "${TUNE_FEATURES:tune-armv8-2a-crypto} octeontx2"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-octeontx2 = "aarch64 crypto octeontx2"
PACKAGE_EXTRA_ARCHS:tune-octeontx2 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} octeontx2"
BASE_LIB:tune-octeontx2 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-4a/tune-neoverse512tvb.inc b/meta/conf/machine/include/arm/armv8-4a/tune-neoverse512tvb.inc
new file mode 100644
index 0000000000..450bf74896
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-4a/tune-neoverse512tvb.inc
@@ -0,0 +1,15 @@
+#
+# Tune Settings for neoverse-512tvb
+#
+DEFAULTTUNE ?= "neoverse512tvb"
+
+TUNEVALID[neoverse512tvb] = "Enable neoverse-512tvb specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'neoverse512tvb', ' -mcpu=neoverse-512tvb', '', d)}"
+
+require conf/machine/include/arm/arch-armv8-4a.inc
+
+AVAILTUNES += "neoverse512tvb"
+ARMPKGARCH:tune-neoverse512tvb = "neoverse512tvb"
+TUNE_FEATURES:tune-neoverse512tvb = "aarch64 crypto neoverse512tvb"
+PACKAGE_EXTRA_ARCHS:tune-neoverse512tvb = "${PACKAGE_EXTRA_ARCHS:tune-armv8-4a-crypto} neoverse512tvb"
+BASE_LIB:tune-neoverse512tvb = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-4a/tune-neoversev1.inc b/meta/conf/machine/include/arm/armv8-4a/tune-neoversev1.inc
new file mode 100644
index 0000000000..2b4da7db3c
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-4a/tune-neoversev1.inc
@@ -0,0 +1,15 @@
+#
+# Tune Settings for neoverse-v1
+#
+DEFAULTTUNE ?= "neoversev1"
+
+TUNEVALID[neoversev1] = "Enable neoverse-v1 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'neoversev1', ' -mcpu=neoverse-v1', '', d)}"
+
+require conf/machine/include/arm/arch-armv8-4a.inc
+
+AVAILTUNES += "neoversev1"
+ARMPKGARCH:tune-neoversev1 = "neoversev1"
+TUNE_FEATURES:tune-neoversev1 = "aarch64 crypto neoversev1"
+PACKAGE_EXTRA_ARCHS:tune-neoversev1 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-4a-crypto} neoversev1"
+BASE_LIB:tune-neoversev1 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-m/tune-cortexm23.inc b/meta/conf/machine/include/arm/armv8-m/tune-cortexm23.inc
new file mode 100644
index 0000000000..e83e0ba68a
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-m/tune-cortexm23.inc
@@ -0,0 +1,15 @@
+#
+# Tune Settings for Cortex-M23
+#
+DEFAULTTUNE ?= "cortexm23"
+
+TUNEVALID[cortexm23] = "Enable Cortex-M23 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexm23', ' -mcpu=cortex-m23', '', d)}"
+
+require conf/machine/include/arm/arch-armv8m-base.inc
+
+AVAILTUNES += "cortexm23"
+ARMPKGARCH:tune-cortexm23 = "cortexm23"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexm23 = "cortexm23"
+PACKAGE_EXTRA_ARCHS:tune-cortexm23 = "${PACKAGE_EXTRA_ARCHS:tune-armv8m-base} cortexm23"
diff --git a/meta/conf/machine/include/arm/armv8-m/tune-cortexm33.inc b/meta/conf/machine/include/arm/armv8-m/tune-cortexm33.inc
new file mode 100644
index 0000000000..606900d7a2
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-m/tune-cortexm33.inc
@@ -0,0 +1,18 @@
+#
+# Tune Settings for Cortex-M33
+#
+DEFAULTTUNE ?= "cortexm33"
+
+TUNEVALID[cortexm33] = "Enable Cortex-M33 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexm33', ' -mcpu=cortex-m33', '', d)}"
+
+require conf/machine/include/arm/arch-armv8m-main.inc
+
+# GCC thnks that DSP and VFP are required, but Arm docs say it is
+# optional. So forcing below so that compiling works, but this should
+# be fixed in GCC
+AVAILTUNES += "cortexm33"
+ARMPKGARCH:tune-cortexm33 = "cortexm33"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexm33 = "vfpv5spd16 dsp cortexm33"
+PACKAGE_EXTRA_ARCHS:tune-cortexm33 = "${PACKAGE_EXTRA_ARCHS:tune-armv8m-maine-vfpv5spd16} cortexm33e-fpv5-spd16"
diff --git a/meta/conf/machine/include/arm/armv8-m/tune-cortexm35p.inc b/meta/conf/machine/include/arm/armv8-m/tune-cortexm35p.inc
new file mode 100644
index 0000000000..4394adab0b
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-m/tune-cortexm35p.inc
@@ -0,0 +1,18 @@
+#
+# Tune Settings for Cortex-M35P
+#
+DEFAULTTUNE ?= "cortexm35p"
+
+TUNEVALID[cortexm35p] = "Enable Cortex-M35p specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexm35p', ' -mcpu=cortex-m35p', '', d)}"
+
+require conf/machine/include/arm/arch-armv8m-main.inc
+
+# GCC thnks that DSP and VFP are required, but Arm docs say it is
+# optional. So forcing below so that compiling works, but this should
+# be fixed in GCC
+AVAILTUNES += "cortexm35p"
+ARMPKGARCH:tune-cortexm35p = "cortexm35p"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexm35p = "vfpv5spd16 dsp cortexm35p"
+PACKAGE_EXTRA_ARCHS:tune-cortexm35p = "${PACKAGE_EXTRA_ARCHS:tune-armv8m-maine-vfpv5spd16} cortexm35pe-fpv5-spd16"
diff --git a/meta/conf/machine/include/tune-cortexa32.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa32.inc
index c7b01a2906..25bdf12b18 100644
--- a/meta/conf/machine/include/tune-cortexa32.inc
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa32.inc
@@ -9,7 +9,8 @@ require conf/machine/include/arm/arch-armv8a.inc
AVAILTUNES += "cortexa32 cortexa32-crypto"
ARMPKGARCH:tune-cortexa32 = "cortexa32"
ARMPKGARCH:tune-cortexa32-crypto = "cortexa32"
-TUNE_FEATURES:tune-cortexa32 = "armv8a cortexa32 crc callconvention-hard neon"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexa32 = "aarch64 cortexa32 crc callconvention-hard neon"
TUNE_FEATURES:tune-cortexa32-crypto = "${TUNE_FEATURES:tune-cortexa32} crypto"
PACKAGE_EXTRA_ARCHS:tune-cortexa32 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa32 cortexa32hf-neon"
PACKAGE_EXTRA_ARCHS:tune-cortexa32-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa32 cortexa32hf-neon cortexa32hf-neon-crypto"
diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa34.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa34.inc
index 55dd845b00..c195d73378 100644
--- a/meta/conf/machine/include/arm/armv8a/tune-cortexa34.inc
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa34.inc
@@ -12,7 +12,8 @@ require conf/machine/include/arm/arch-armv8a.inc
AVAILTUNES += "cortexa34 cortexa34-crypto"
ARMPKGARCH:tune-cortexa34 = "cortexa34"
ARMPKGARCH:tune-cortexa34-crypto = "cortexa34"
-TUNE_FEATURES:tune-cortexa34 = "${TUNE_FEATURES:tune-armv8a-crc} cortexa34"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexa34 = "aarch64 crc cortexa34"
TUNE_FEATURES:tune-cortexa34-crypto = "${TUNE_FEATURES:tune-cortexa34} crypto"
PACKAGE_EXTRA_ARCHS:tune-cortexa34 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa34"
PACKAGE_EXTRA_ARCHS:tune-cortexa34-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa34 cortexa34-crypto"
diff --git a/meta/conf/machine/include/tune-cortexa35.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa35.inc
index 33afb19386..d811c84455 100644
--- a/meta/conf/machine/include/tune-cortexa35.inc
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa35.inc
@@ -9,7 +9,8 @@ require conf/machine/include/arm/arch-armv8a.inc
AVAILTUNES += "cortexa35 cortexa35-crypto"
ARMPKGARCH:tune-cortexa35 = "cortexa35"
ARMPKGARCH:tune-cortexa35-crypto = "cortexa35"
-TUNE_FEATURES:tune-cortexa35 = "${TUNE_FEATURES:tune-armv8a-crc} cortexa35"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexa35 = "aarch64 crc cortexa35"
TUNE_FEATURES:tune-cortexa35-crypto = "${TUNE_FEATURES:tune-cortexa35} crypto"
PACKAGE_EXTRA_ARCHS:tune-cortexa35 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa35"
PACKAGE_EXTRA_ARCHS:tune-cortexa35-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa35 cortexa35-crypto"
diff --git a/meta/conf/machine/include/tune-cortexa53.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa53.inc
index a534ad358d..a88575eb15 100644
--- a/meta/conf/machine/include/tune-cortexa53.inc
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa53.inc
@@ -9,7 +9,8 @@ require conf/machine/include/arm/arch-armv8a.inc
AVAILTUNES += "cortexa53 cortexa53-crypto"
ARMPKGARCH:tune-cortexa53 = "cortexa53"
ARMPKGARCH:tune-cortexa53-crypto = "cortexa53-crypto"
-TUNE_FEATURES:tune-cortexa53 = "${TUNE_FEATURES:tune-armv8a-crc} cortexa53"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexa53 = "aarch64 crc cortexa53"
TUNE_FEATURES:tune-cortexa53-crypto = "${TUNE_FEATURES:tune-cortexa53} crypto"
PACKAGE_EXTRA_ARCHS:tune-cortexa53 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa53"
PACKAGE_EXTRA_ARCHS:tune-cortexa53-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa53 cortexa53-crypto"
diff --git a/meta/conf/machine/include/tune-cortexa57-cortexa53.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa57-cortexa53.inc
index 7de671a2e5..052d1173c9 100644
--- a/meta/conf/machine/include/tune-cortexa57-cortexa53.inc
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa57-cortexa53.inc
@@ -9,6 +9,7 @@ require conf/machine/include/arm/arch-armv8a.inc
# Little Endian base configs
AVAILTUNES += "cortexa57-cortexa53"
ARMPKGARCH:tune-cortexa57-cortexa53 = "cortexa57-cortexa53"
-TUNE_FEATURES:tune-cortexa57-cortexa53 = "${TUNE_FEATURES:tune-armv8a-crc} cortexa57-cortexa53"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexa57-cortexa53 = "aarch64 crc cortexa57-cortexa53"
PACKAGE_EXTRA_ARCHS:tune-cortexa57-cortexa53 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa57-cortexa53"
BASE_LIB:tune-cortexa57-cortexa53 = "lib64"
diff --git a/meta/conf/machine/include/tune-cortexa57.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa57.inc
index 37650d8798..b0de20f836 100644
--- a/meta/conf/machine/include/tune-cortexa57.inc
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa57.inc
@@ -9,7 +9,8 @@ require conf/machine/include/arm/arch-armv8a.inc
AVAILTUNES += "cortexa57 cortexa57-crypto"
ARMPKGARCH:tune-cortexa57 = "cortexa57"
ARMPKGARCH:tune-cortexa57-crypto = "cortexa57-crypto"
-TUNE_FEATURES:tune-cortexa57 = "${TUNE_FEATURES:tune-armv8a-crc} cortexa57"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexa57 = "aarch64 crc cortexa57"
TUNE_FEATURES:tune-cortexa57-crypto = "${TUNE_FEATURES:tune-cortexa57} crypto"
PACKAGE_EXTRA_ARCHS:tune-cortexa57 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa57"
PACKAGE_EXTRA_ARCHS:tune-cortexa57-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa57 cortexa57-crypto"
diff --git a/meta/conf/machine/include/tune-cortexa72-cortexa53.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa72-cortexa53.inc
index a77ef59d62..ff188aec5f 100644
--- a/meta/conf/machine/include/tune-cortexa72-cortexa53.inc
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa72-cortexa53.inc
@@ -10,7 +10,8 @@ require conf/machine/include/arm/arch-armv8a.inc
AVAILTUNES += "cortexa72-cortexa53 cortexa72-cortexa53-crypto"
ARMPKGARCH:tune-cortexa72-cortexa53 = "cortexa72-cortexa53"
ARMPKGARCH:tune-cortexa72-cortexa53-crypto = "cortexa72-cortexa53-crypto"
-TUNE_FEATURES:tune-cortexa72-cortexa53 = "${TUNE_FEATURES:tune-armv8a-crc} cortexa72-cortexa53"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexa72-cortexa53 = "aarch64 crc cortexa72-cortexa53"
TUNE_FEATURES:tune-cortexa72-cortexa53-crypto = "${TUNE_FEATURES:tune-cortexa72-cortexa53} crypto"
PACKAGE_EXTRA_ARCHS:tune-cortexa72-cortexa53 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa72-cortexa53"
PACKAGE_EXTRA_ARCHS:tune-cortexa72-cortexa53-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa72-cortexa53 cortexa72-cortexa53-crypto"
diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa72.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa72.inc
new file mode 100644
index 0000000000..cbb6418c06
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa72.inc
@@ -0,0 +1,18 @@
+DEFAULTTUNE ?= "cortexa72"
+
+TUNEVALID[cortexa72] = "Enable Cortex-A72 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa72', ' -mcpu=cortex-a72', '', d)}"
+
+require conf/machine/include/arm/arch-armv8a.inc
+
+# Little Endian base configs
+AVAILTUNES += "cortexa72 cortexa72-crypto"
+ARMPKGARCH:tune-cortexa72 = "cortexa72"
+ARMPKGARCH:tune-cortexa72-crypto = "cortexa72"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexa72 = "aarch64 crc cortexa72"
+TUNE_FEATURES:tune-cortexa72-crypto = "${TUNE_FEATURES:tune-cortexa72} crypto"
+PACKAGE_EXTRA_ARCHS:tune-cortexa72 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa72"
+PACKAGE_EXTRA_ARCHS:tune-cortexa72-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa72 cortexa72-crypto"
+BASE_LIB:tune-cortexa72 = "lib64"
+BASE_LIB:tune-cortexa72-crypto = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc
index 869670bf0c..4f4f25f511 100644
--- a/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc
@@ -13,7 +13,8 @@ require conf/machine/include/arm/arch-armv8a.inc
AVAILTUNES += "cortexa73-cortexa35 cortexa73-cortexa35-crypto"
ARMPKGARCH:tune-cortexa73-cortexa35 = "cortexa73-cortexa35"
ARMPKGARCH:tune-cortexa73-cortexa35-crypto = "cortexa73-cortexa35-crypto"
-TUNE_FEATURES:tune-cortexa73-cortexa35 = "${TUNE_FEATURES:tune-armv8a-crc} cortexa73-cortexa35"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexa73-cortexa35 = "aarch64 crc cortexa73-cortexa35"
TUNE_FEATURES:tune-cortexa73-cortexa35-crypto = "${TUNE_FEATURES:tune-cortexa73-cortexa35} crypto"
PACKAGE_EXTRA_ARCHS:tune-cortexa73-cortexa35 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa73-cortexa35"
PACKAGE_EXTRA_ARCHS:tune-cortexa73-cortexa35-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa73-cortexa35 cortexa73-cortexa35-crypto"
diff --git a/meta/conf/machine/include/tune-cortexa73-cortexa53.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa53.inc
index 9cebffd54d..1d152ed83b 100644
--- a/meta/conf/machine/include/tune-cortexa73-cortexa53.inc
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa53.inc
@@ -10,7 +10,8 @@ require conf/machine/include/arm/arch-armv8a.inc
AVAILTUNES += "cortexa73-cortexa53 cortexa73-cortexa53-crypto"
ARMPKGARCH:tune-cortexa73-cortexa53 = "cortexa73-cortexa53"
ARMPKGARCH:tune-cortexa73-cortexa53-crypto = "cortexa73-cortexa53-crypto"
-TUNE_FEATURES:tune-cortexa73-cortexa53 = "${TUNE_FEATURES:tune-armv8a-crc} cortexa73-cortexa53"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexa73-cortexa53 = "aarch64 crc cortexa73-cortexa53"
TUNE_FEATURES:tune-cortexa73-cortexa53-crypto = "${TUNE_FEATURES:tune-cortexa73-cortexa53} crypto"
PACKAGE_EXTRA_ARCHS:tune-cortexa73-cortexa53 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa73-cortexa53"
PACKAGE_EXTRA_ARCHS:tune-cortexa73-cortexa53-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa73-cortexa53 cortexa73-cortexa53-crypto"
diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa73.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa73.inc
index fc91dafb1d..b3b06a4f09 100644
--- a/meta/conf/machine/include/arm/armv8a/tune-cortexa73.inc
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa73.inc
@@ -9,8 +9,13 @@ TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa73', ' -mcpu=corte
require conf/machine/include/arm/arch-armv8a.inc
# Little Endian base configs
-AVAILTUNES += "cortexa73"
+AVAILTUNES += "cortexa73 cortexa73-crypto"
ARMPKGARCH:tune-cortexa73 = "cortexa73"
-TUNE_FEATURES:tune-cortexa73 = "${TUNE_FEATURES:tune-armv8a-crc-crypto} cortexa73"
-PACKAGE_EXTRA_ARCHS:tune-cortexa73 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa73"
+ARMPKGARCH:tune-cortexa73-crypto = "cortexa73"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexa73 = "aarch64 crc cortexa73"
+TUNE_FEATURES:tune-cortexa73-crypto = "${TUNE_FEATURES:tune-cortexa73} crypto"
+PACKAGE_EXTRA_ARCHS:tune-cortexa73 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa73"
+PACKAGE_EXTRA_ARCHS:tune-cortexa73-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa73 cortexa73-crypto"
BASE_LIB:tune-cortexa73 = "lib64"
+BASE_LIB:tune-cortexa73-crypto = "lib64"
diff --git a/meta/conf/machine/include/tune-thunderx.inc b/meta/conf/machine/include/arm/armv8a/tune-thunderx.inc
index 7bc6282be8..7bc6282be8 100644
--- a/meta/conf/machine/include/tune-thunderx.inc
+++ b/meta/conf/machine/include/arm/armv8a/tune-thunderx.inc
diff --git a/meta/conf/machine/include/arm/armv8r/tune-cortexr52.inc b/meta/conf/machine/include/arm/armv8r/tune-cortexr52.inc
new file mode 100644
index 0000000000..89f0e09450
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8r/tune-cortexr52.inc
@@ -0,0 +1,20 @@
+#
+# Tune Settings for Cortex-R52
+#
+DEFAULTTUNE ?= "cortexr52"
+
+TUNEVALID[cortexr52] = "Enable Cortex-R52 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexr52', ' -mcpu=cortex-r52', '', d)}"
+
+require conf/machine/include/arm/arch-armv8r.inc
+
+AVAILTUNES += "cortexr52"
+ARMPKGARCH:tune-cortexr52 = "cortexr52"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-cortexr52 = "aarch64 crc simd cortexr52"
+PACKAGE_EXTRA_ARCHS:tune-cortexr52 = "${PACKAGE_EXTRA_ARCHS:tune-armv8r-crc-simd} cortexr52"
+
+AVAILTUNES += "cortexr52hf"
+ARMPKGARCH:tune-cortexr52hf = "cortexr52"
+TUNE_FEATURES:tune-cortexr52hf = "${TUNE_FEATURES:tune-cortexr52} callconvention-hard"
+PACKAGE_EXTRA_ARCHS:tune-cortexr52hf = "cortexr52hf"
diff --git a/meta/conf/machine/include/arm/armv8r/tune-cortexr82.inc b/meta/conf/machine/include/arm/armv8r/tune-cortexr82.inc
new file mode 100644
index 0000000000..84b2471c6b
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8r/tune-cortexr82.inc
@@ -0,0 +1,15 @@
+#
+# Tune Settings for cortex-r82
+#
+DEFAULTTUNE ?= "cortexr82"
+
+TUNEVALID[cortexr82] = "Enable cortex-r82 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexr82', ' -mcpu=cortex-r82', '', d)}"
+
+require conf/machine/include/arm/arch-armv8r.inc
+
+AVAILTUNES += "cortexr82"
+ARMPKGARCH:tune-cortexr82 = "cortexr82"
+TUNE_FEATURES:tune-cortexr82 = "${TUNE_FEATURES:tune-armv8r-crc-simd} cortexr82"
+PACKAGE_EXTRA_ARCHS:tune-cortexr82 = "${PACKAGE_EXTRA_ARCHS:tune-armv8r-crc-simd} cortexr82"
+BASE_LIB:tune-cortexr82 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv9a/tune-cortexa510.inc b/meta/conf/machine/include/arm/armv9a/tune-cortexa510.inc
new file mode 100644
index 0000000000..09219ec7f1
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv9a/tune-cortexa510.inc
@@ -0,0 +1,15 @@
+#
+# Tune Settings for cortex-a510
+#
+DEFAULTTUNE ?= "cortexa510"
+
+TUNEVALID[cortexa510] = "Enable cortex-a510 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa510', ' -mcpu=cortex-a510', '', d)}"
+
+require conf/machine/include/arm/arch-armv9a.inc
+
+AVAILTUNES += "cortexa510"
+ARMPKGARCH:tune-cortexa510 = "cortexa510"
+TUNE_FEATURES:tune-cortexa510 = "aarch64 crypto cortexa510"
+PACKAGE_EXTRA_ARCHS:tune-cortexa510 = "${PACKAGE_EXTRA_ARCHS:tune-armv9a-crypto} cortexa510"
+BASE_LIB:tune-cortexa510 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv9a/tune-cortexa710.inc b/meta/conf/machine/include/arm/armv9a/tune-cortexa710.inc
new file mode 100644
index 0000000000..19743d67db
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv9a/tune-cortexa710.inc
@@ -0,0 +1,15 @@
+#
+# Tune Settings for cortex-a710
+#
+DEFAULTTUNE ?= "cortexa710"
+
+TUNEVALID[cortexa710] = "Enable cortex-a710 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa710', ' -mcpu=cortex-a710', '', d)}"
+
+require conf/machine/include/arm/arch-armv9a.inc
+
+AVAILTUNES += "cortexa710"
+ARMPKGARCH:tune-cortexa710 = "cortexa710"
+TUNE_FEATURES:tune-cortexa710 = "aarch64 crypto cortexa710"
+PACKAGE_EXTRA_ARCHS:tune-cortexa710 = "${PACKAGE_EXTRA_ARCHS:tune-armv9a-crypto} cortexa710"
+BASE_LIB:tune-cortexa710 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv9a/tune-cortexa715.inc b/meta/conf/machine/include/arm/armv9a/tune-cortexa715.inc
new file mode 100644
index 0000000000..2f6d8c6f8f
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv9a/tune-cortexa715.inc
@@ -0,0 +1,15 @@
+#
+# Tune Settings for cortex-a715
+#
+DEFAULTTUNE ?= "cortexa715"
+
+TUNEVALID[cortexa715] = "Enable cortex-a715 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa715', ' -mcpu=cortex-a715', '', d)}"
+
+require conf/machine/include/arm/arch-armv9a.inc
+
+AVAILTUNES += "cortexa715"
+ARMPKGARCH:tune-cortexa715 = "cortexa715"
+TUNE_FEATURES:tune-cortexa715 = "aarch64 crypto cortexa715"
+PACKAGE_EXTRA_ARCHS:tune-cortexa715 = "${PACKAGE_EXTRA_ARCHS:tune-armv9a-crypto} cortexa715"
+BASE_LIB:tune-cortexa715 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv9a/tune-cortexx2.inc b/meta/conf/machine/include/arm/armv9a/tune-cortexx2.inc
new file mode 100644
index 0000000000..c116e30ff5
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv9a/tune-cortexx2.inc
@@ -0,0 +1,15 @@
+#
+# Tune Settings for cortex-x2
+#
+DEFAULTTUNE ?= "cortexx2"
+
+TUNEVALID[cortexx2] = "Enable cortex-x2 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexx2', ' -mcpu=cortex-x2', '', d)}"
+
+require conf/machine/include/arm/arch-armv9a.inc
+
+AVAILTUNES += "cortexx2"
+ARMPKGARCH:tune-cortexx2 = "cortexx2"
+TUNE_FEATURES:tune-cortexx2 = "aarch64 crypto cortexx2"
+PACKAGE_EXTRA_ARCHS:tune-cortexx2 = "${PACKAGE_EXTRA_ARCHS:tune-armv9a-crypto} cortexx2"
+BASE_LIB:tune-cortexx2 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv9a/tune-cortexx3.inc b/meta/conf/machine/include/arm/armv9a/tune-cortexx3.inc
new file mode 100644
index 0000000000..7982079ef8
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv9a/tune-cortexx3.inc
@@ -0,0 +1,15 @@
+#
+# Tune Settings for cortex-x3
+#
+DEFAULTTUNE ?= "cortexx3"
+
+TUNEVALID[cortexx3] = "Enable cortex-x3 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexx3', ' -mcpu=cortex-x3', '', d)}"
+
+require conf/machine/include/arm/arch-armv9a.inc
+
+AVAILTUNES += "cortexx3"
+ARMPKGARCH:tune-cortexx3 = "cortexx3"
+TUNE_FEATURES:tune-cortexx3 = "aarch64 crypto cortexx3"
+PACKAGE_EXTRA_ARCHS:tune-cortexx3 = "${PACKAGE_EXTRA_ARCHS:tune-armv9a-crypto} cortexx3"
+BASE_LIB:tune-cortexx3 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv9a/tune-neoversen2.inc b/meta/conf/machine/include/arm/armv9a/tune-neoversen2.inc
new file mode 100644
index 0000000000..ad60a3c9f3
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv9a/tune-neoversen2.inc
@@ -0,0 +1,21 @@
+#
+# Tune Settings for Neoverse-N2
+#
+DEFAULTTUNE ?= "neoversen2"
+
+TUNEVALID[neoversen2] = "Enable Neoverse-N2 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'neoversen2', ' -mcpu=neoverse-n2', '', d)}"
+
+require conf/machine/include/arm/arch-armv9a.inc
+
+# Little Endian base configs
+AVAILTUNES += "neoversen2 neoversen2-crypto"
+ARMPKGARCH:tune-neoversen2 = "neoversen2"
+ARMPKGARCH:tune-neoversen2-crypto = "neoversen2-crypto"
+# We do not want -march since -mcpu is added above to cover for it
+TUNE_FEATURES:tune-neoversen2 = "aarch64 neoversen2"
+TUNE_FEATURES:tune-neoversen2-crypto = "${TUNE_FEATURES:tune-neoversen2} crypto"
+PACKAGE_EXTRA_ARCHS:tune-neoversen2 = "${PACKAGE_EXTRA_ARCHS:tune-armv9a} neoversen2"
+PACKAGE_EXTRA_ARCHS:tune-neoversen2-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv9a-crypto} neoversen2 neoversen2-crypto"
+BASE_LIB:tune-neoversen2 = "lib64"
+BASE_LIB:tune-neoversen2-crypto = "lib64"
diff --git a/meta/conf/machine/include/arm/armv9a/tune-neoversev2.inc b/meta/conf/machine/include/arm/armv9a/tune-neoversev2.inc
new file mode 100644
index 0000000000..5d1e108468
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv9a/tune-neoversev2.inc
@@ -0,0 +1,15 @@
+#
+# Tune Settings for neoverse-v2
+#
+DEFAULTTUNE ?= "neoversev2"
+
+TUNEVALID[neoversev2] = "Enable neoverse-v2 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'neoversev2', ' -mcpu=neoverse-v2', '', d)}"
+
+require conf/machine/include/arm/arch-armv9a.inc
+
+AVAILTUNES += "neoversev2"
+ARMPKGARCH:tune-neoversev2 = "neoversev2"
+TUNE_FEATURES:tune-neoversev2 = "aarch64 crypto neoversev2"
+PACKAGE_EXTRA_ARCHS:tune-neoversev2 = "${PACKAGE_EXTRA_ARCHS:tune-armv9a-crypto} neoversev2"
+BASE_LIB:tune-neoversev2 = "lib64"
diff --git a/meta/conf/machine/include/arm/feature-arm-crc.inc b/meta/conf/machine/include/arm/feature-arm-crc.inc
new file mode 100644
index 0000000000..8a69d2e2fa
--- /dev/null
+++ b/meta/conf/machine/include/arm/feature-arm-crc.inc
@@ -0,0 +1,4 @@
+# Cyclic Redundancy Check (CRC) instructions for armv8-a and armv8-r
+
+TUNEVALID[crc] = "Enable instructions for ARMv8 Cyclic Redundancy Check (CRC)"
+TUNE_CCARGS_MARCH_OPTS .= "${@bb.utils.contains('TUNE_FEATURES', 'crc', '+crc', '', d)}"
diff --git a/meta/conf/machine/include/arm/feature-arm-crypto.inc b/meta/conf/machine/include/arm/feature-arm-crypto.inc
new file mode 100644
index 0000000000..aade6ce08d
--- /dev/null
+++ b/meta/conf/machine/include/arm/feature-arm-crypto.inc
@@ -0,0 +1,5 @@
+# Cryptographic instructions for:
+# armv8-a, armv8.1-a, armv8.3-a, armv8.4-a, armv8.5-a, armv8.6-a, and armv8-r
+
+TUNEVALID[crypto] = "Enable cryptographic instructions for ARMv8"
+TUNE_CCARGS_MARCH_OPTS .= "${@bb.utils.contains('TUNE_FEATURES', 'crypto', '+crypto', '', d)}"
diff --git a/meta/conf/machine/include/arm/feature-arm-dsp.inc b/meta/conf/machine/include/arm/feature-arm-dsp.inc
new file mode 100644
index 0000000000..7f7ada7461
--- /dev/null
+++ b/meta/conf/machine/include/arm/feature-arm-dsp.inc
@@ -0,0 +1,3 @@
+ARMPKGSFX_DSP = "${@bb.utils.contains('TUNE_FEATURES', [ 'dsp' ], 'e', '', d)}"
+TUNEVALID[dsp] = "ARM DSP functionality"
+TUNE_CCARGS_MARCH_OPTS .= "${@bb.utils.contains('TUNE_FEATURES', [ 'dsp' ], '+dsp', '', d)}"
diff --git a/meta/conf/machine/include/arm/feature-arm-idiv.inc b/meta/conf/machine/include/arm/feature-arm-idiv.inc
new file mode 100644
index 0000000000..0ea42b1b39
--- /dev/null
+++ b/meta/conf/machine/include/arm/feature-arm-idiv.inc
@@ -0,0 +1,2 @@
+TUNEVALID[idiv] = "ARM-state integer division instructions"
+TUNE_CCARGS_MARCH_OPTS .= "${@bb.utils.contains('TUNE_FEATURES', 'idiv', '+idiv', '', d)}"
diff --git a/meta/conf/machine/include/arm/feature-arm-neon.inc b/meta/conf/machine/include/arm/feature-arm-neon.inc
index eaddd054ce..174b9b9f2a 100644
--- a/meta/conf/machine/include/arm/feature-arm-neon.inc
+++ b/meta/conf/machine/include/arm/feature-arm-neon.inc
@@ -19,3 +19,8 @@ TUNE_CCARGS_MFPU .= "${@bb.utils.contains('TUNE_FEATURES', [ 'vfpv4', 'neon' ],
TUNEVALID[vfpv4d16] = "Enable Vector Floating Point Version 4 with 16 registers (vfpv4-d16) unit."
TUNE_CCARGS_MFPU .= "${@bb.utils.contains('TUNE_FEATURES', 'vfpv4d16', ' vfpv4-d16', '', d)}"
+
+TUNEVALID[vfpv5spd16] = "Enable Vector Floating Point Version 5, Single Precision. with 16 registers (fpv5-sp-d16) unit."
+TUNE_CCARGS_MFPU .= "${@bb.utils.contains('TUNE_FEATURES', 'vfpv5spd16', 'fpv5-sp-d16', '', d)}"
+
+TUNE_CCARGS_MARCH_OPTS .= "${@bb.utils.contains('TUNE_FEATURES', [ 'vfpv3d16', 'vfpv5spd16' ], '+fp', '', d)}"
diff --git a/meta/conf/machine/include/arm/feature-arm-simd.inc b/meta/conf/machine/include/arm/feature-arm-simd.inc
new file mode 100644
index 0000000000..1afaf8d901
--- /dev/null
+++ b/meta/conf/machine/include/arm/feature-arm-simd.inc
@@ -0,0 +1,5 @@
+# Advanced SIMD and floating-point instructions for armv7-a, armv7ve,
+# armv8-a, armv8.1-a, armv8.3-a, armv8.4-a, armv8.5-a, armv8.6-a, and armv8-r
+
+TUNEVALID[simd] = "Enable instructions for Advanced SIMD and floating-point units"
+TUNE_CCARGS_MARCH_OPTS .= "${@bb.utils.contains('TUNE_FEATURES', 'simd', '+simd', '', d)}"
diff --git a/meta/conf/machine/include/arm/feature-arm-sve.inc b/meta/conf/machine/include/arm/feature-arm-sve.inc
new file mode 100644
index 0000000000..bdae3d8fc3
--- /dev/null
+++ b/meta/conf/machine/include/arm/feature-arm-sve.inc
@@ -0,0 +1,8 @@
+# Scalable Vector Extension (SVE) for Armv8-A and R
+# Enabled by default for Armv9
+
+TUNEVALID[sve] = "Enable SVE instructions for ARMv8"
+TUNE_CCARGS_MARCH_OPTS .= "${@bb.utils.contains('TUNE_FEATURES', 'sve', '+sve', '', d)}"
+
+TUNEVALID[sve2] = "Enable SVE2 instructions for ARMv8"
+TUNE_CCARGS_MARCH_OPTS .= "${@bb.utils.contains('TUNE_FEATURES', 'sve2', '+sve2', '', d)}"
diff --git a/meta/conf/machine/include/arm/feature-arm-vfp.inc b/meta/conf/machine/include/arm/feature-arm-vfp.inc
index 678888e638..d020100daa 100644
--- a/meta/conf/machine/include/arm/feature-arm-vfp.inc
+++ b/meta/conf/machine/include/arm/feature-arm-vfp.inc
@@ -5,11 +5,12 @@
TUNEVALID[vfp] = "Enable Vector Floating Point (vfp) unit."
TUNE_CCARGS_MFPU .= "${@bb.utils.contains('TUNE_FEATURES', 'vfp', ' vfp', '', d)}"
+# simd is special, we don't pass this to the -mfpu, it's implied
TUNE_CCARGS .= "${@ (' -mfpu=%s' % d.getVar('TUNE_CCARGS_MFPU').split()[-1]) if (d.getVar('TUNE_CCARGS_MFPU') != '') else ''}"
# The following deals with both vfpv3-d16 and vfpv4-d16
ARMPKGSFX_FPU = "${@ ('-%s' % d.getVar('TUNE_CCARGS_MFPU').split()[-1].replace('-d16', 'd16')) if (d.getVar('TUNE_CCARGS_MFPU') != '') else ''}"
TUNEVALID[callconvention-hard] = "Enable EABI hard float call convention, requires VFP."
-TUNE_CCARGS_MFLOAT = "${@ bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'hard', 'softfp', d) if (d.getVar('TUNE_CCARGS_MFPU') != '') else '' }"
+TUNE_CCARGS_MFLOAT = "${@ bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'hard', 'softfp', d) if (d.getVar('TUNE_CCARGS_MFPU') != '' or bb.utils.contains('TUNE_FEATURES', 'simd', True, False, d)) else '' }"
TUNE_CCARGS .= "${@ ' -mfloat-abi=${TUNE_CCARGS_MFLOAT}' if (d.getVar('TUNE_CCARGS_MFLOAT') != '') else ''}"
ARMPKGSFX_EABI = "${@ 'hf' if (d.getVar('TUNE_CCARGS_MFLOAT') == 'hard') else ''}"
diff --git a/meta/conf/machine/include/loongarch/arch-loongarch.inc b/meta/conf/machine/include/loongarch/arch-loongarch.inc
new file mode 100644
index 0000000000..d0a51b34c7
--- /dev/null
+++ b/meta/conf/machine/include/loongarch/arch-loongarch.inc
@@ -0,0 +1,7 @@
+# LoongArch Architecture definition
+
+DEFAULTTUNE ?= "loongarch64"
+
+TUNE_ARCH = "${TUNE_ARCH:tune-${DEFAULTTUNE}}"
+TUNE_PKGARCH = "${TUNE_PKGARCH:tune-${DEFAULTTUNE}}"
+TUNE_CCARGS:append = "${@bb.utils.contains('TUNE_FEATURES', 'loongarch64', ' -march=loongarch64 -mabi=lp64d', ' ', d)}"
diff --git a/meta/conf/machine/include/loongarch/qemuloongarch.inc b/meta/conf/machine/include/loongarch/qemuloongarch.inc
new file mode 100644
index 0000000000..e1bcfabc43
--- /dev/null
+++ b/meta/conf/machine/include/loongarch/qemuloongarch.inc
@@ -0,0 +1,35 @@
+PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot"
+
+require conf/machine/include/qemu.inc
+require conf/machine/include/loongarch/tune-loongarch.inc
+
+MACHINE_FEATURES = "screen keyboard ext2 ext3 serial"
+
+KERNEL_IMAGETYPE = "vmlinuz"
+KERNEL_IMAGETYPES += "vmlinuz"
+KEEPUIMAGE = "no"
+
+SERIAL_CONSOLES ?= "115200;ttyS0 115200;hvc0"
+
+IMAGE_FSTYPES += "ext4 wic.qcow2"
+
+WKS_FILE ?= "qemuloongarch.wks"
+
+MACHINE_EXTRA_RRECOMMENDS += " kernel-modules"
+
+#EXTRA_IMAGEDEPENDS += "opensbi"
+
+UBOOT_ENTRYPOINT_loongarch32 = "0x80400000"
+UBOOT_ENTRYPOINT_loongarch64 = "0x80200000"
+
+# qemuboot options
+QB_KERNEL_CMDLINE_APPEND = "earlycon=sbi"
+QB_MACHINE = "-machine virt"
+QB_DEFAULT_BIOS = "fw_jump.elf"
+QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no"
+QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=net0,mac=@MAC@"
+QB_ROOTFS_OPT = "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-device,drive=disk0"
+QB_SERIAL_OPT = "-device virtio-serial-pci -chardev null,id=virtcon -device virtconsole,chardev=virtcon"
+QB_TCPSERIAL_OPT = " -device virtio-serial-pci -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1,nodelay=on -device virtconsole,chardev=virtcon"
+# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
+QB_OPT_APPEND = " -object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-device,rng=rng0"
diff --git a/meta/conf/machine/include/loongarch/tune-loongarch.inc b/meta/conf/machine/include/loongarch/tune-loongarch.inc
new file mode 100644
index 0000000000..f02ddda474
--- /dev/null
+++ b/meta/conf/machine/include/loongarch/tune-loongarch.inc
@@ -0,0 +1,13 @@
+require conf/machine/include/loongarch/arch-loongarch.inc
+
+TUNEVALID[loongarch64] = "Enable 64-bit LoongArch optimizations"
+
+TUNEVALID[littleendian] = "Little endian mode"
+
+AVAILTUNES += "loongarch64"
+
+# Default
+TUNE_FEATURES:tune-loongarch64 = "loongarch64"
+TUNE_ARCH:tune-loongarch64 = "loongarch64"
+TUNE_PKGARCH:tune-loongarch64 = "loongarch64"
+PACKAGE_EXTRA_ARCHS:tune-loongarch64 = "loongarch64"
diff --git a/meta/conf/machine/include/tune-mcf5441x.inc b/meta/conf/machine/include/m68k/tune-mcf5441x.inc
index 7eefce03cb..7eefce03cb 100644
--- a/meta/conf/machine/include/tune-mcf5441x.inc
+++ b/meta/conf/machine/include/m68k/tune-mcf5441x.inc
diff --git a/meta/conf/machine/include/microblaze/feature-microblaze-versions.inc b/meta/conf/machine/include/microblaze/feature-microblaze-versions.inc
index 5c37f49abb..658e87b8cd 100644
--- a/meta/conf/machine/include/microblaze/feature-microblaze-versions.inc
+++ b/meta/conf/machine/include/microblaze/feature-microblaze-versions.inc
@@ -16,7 +16,7 @@ def microblaze_current_version(d, gcc = False):
# find the current version, and convert it to major/minor integers
version = None
for t in (d.getVar("TUNE_FEATURES") or "").split():
- m = re.search("^v(\d+)\.(\d+)", t)
+ m = re.search(r"^v(\d+)\.(\d+)", t)
if m:
version = int(m.group(1)), int(m.group(2))
break
diff --git a/meta/conf/machine/include/tune-microblaze.inc b/meta/conf/machine/include/microblaze/tune-microblaze.inc
index 11f7233cf4..11f7233cf4 100644
--- a/meta/conf/machine/include/tune-microblaze.inc
+++ b/meta/conf/machine/include/microblaze/tune-microblaze.inc
diff --git a/meta/conf/machine/include/mips/arch-mips.inc b/meta/conf/machine/include/mips/arch-mips.inc
index e48ddd2d6b..e39cdcab5d 100644
--- a/meta/conf/machine/include/mips/arch-mips.inc
+++ b/meta/conf/machine/include/mips/arch-mips.inc
@@ -26,6 +26,8 @@ MACHINE_FEATURES_BACKFILL_CONSIDERED:append = " ${@bb.utils.contains('TUNE_FEATU
TUNEVALID[n64] = "MIPS64 n64 ABI"
TUNECONFLICTS[n64] = "o32 n32"
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'n64', ' -mabi=64', '', d)}"
+LD64ARG = "${@bb.utils.contains('TUNE_FEATURES', 'bigendian', '-m elf64btsmip', '-m elf64ltsmip', d)}"
+TUNE_LDARGS += "${@bb.utils.contains('TUNE_FEATURES', 'n64', '${LD64ARG}', '', d)}"
# Floating point
TUNEVALID[fpu-hard] = "Use hardware FPU"
diff --git a/meta/conf/machine/include/mips/feature-mips-mips16e.inc b/meta/conf/machine/include/mips/feature-mips-mips16e.inc
index 101d5331bc..6fd12fb842 100644
--- a/meta/conf/machine/include/mips/feature-mips-mips16e.inc
+++ b/meta/conf/machine/include/mips/feature-mips-mips16e.inc
@@ -11,7 +11,7 @@ MIPSPKGSFX_MIPS16E .= "${@bb.utils.contains('TUNE_FEATURES', 'mips16e', '-m16',
TUNEVALID[no-interlink-compressed] = "Disable mixing of standard and MIPS16e code"
MIPS16_TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'no-interlink-compressed', ' -mno-interlink-compressed', ' -minterlink-compressed', d)}"
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mips16e', ' ${MIPS16_TUNE_CCARGS}', '', d)}"
-OVERRIDES .= "${@bb.utils.contains('TUNE_FEATURES', 'mips16e', ':mips16e', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'mips16e', 'mips16e:', '', d)}"
# show status (if compiling in MIPS16e mode)
BUILDCFG_VARS += "${@['', 'MIPS_INSTRUCTION_SET'][d.getVar('MIPS_INSTRUCTION_SET') == 'mips16e']}"
diff --git a/meta/conf/machine/include/qemuboot-mips.inc b/meta/conf/machine/include/mips/qemuboot-mips.inc
index 4954f3068c..4954f3068c 100644
--- a/meta/conf/machine/include/qemuboot-mips.inc
+++ b/meta/conf/machine/include/mips/qemuboot-mips.inc
diff --git a/meta/conf/machine/include/mips/tune-mips-24k.inc b/meta/conf/machine/include/mips/tune-mips-24k.inc
index ed6566587d..106ff62fbb 100644
--- a/meta/conf/machine/include/mips/tune-mips-24k.inc
+++ b/meta/conf/machine/include/mips/tune-mips-24k.inc
@@ -2,7 +2,7 @@ DEFAULTTUNE ?= "mips32r2-24kc"
MIPSPKGSFX_MIPS16E ??= ""
-require conf/machine/include/tune-mips32r2.inc
+require conf/machine/include/mips/tune-mips32r2.inc
require conf/machine/include/mips/feature-mips-mips16e.inc
diff --git a/meta/conf/machine/include/mips/tune-mips-74k.inc b/meta/conf/machine/include/mips/tune-mips-74k.inc
index 988cfaef6e..e4927a1ce0 100644
--- a/meta/conf/machine/include/mips/tune-mips-74k.inc
+++ b/meta/conf/machine/include/mips/tune-mips-74k.inc
@@ -2,7 +2,7 @@ DEFAULTTUNE ?= "mips32r2-74kc"
MIPSPKGSFX_MIPS16E ??= ""
-require conf/machine/include/tune-mips32r2.inc
+require conf/machine/include/mips/tune-mips32r2.inc
require conf/machine/include/mips/feature-mips-mips16e.inc
diff --git a/meta/conf/machine/include/tune-mips32.inc b/meta/conf/machine/include/mips/tune-mips32.inc
index 820087f59d..820087f59d 100644
--- a/meta/conf/machine/include/tune-mips32.inc
+++ b/meta/conf/machine/include/mips/tune-mips32.inc
diff --git a/meta/conf/machine/include/tune-mips32r2.inc b/meta/conf/machine/include/mips/tune-mips32r2.inc
index e7f6753d3d..c868e925e9 100644
--- a/meta/conf/machine/include/tune-mips32r2.inc
+++ b/meta/conf/machine/include/mips/tune-mips32r2.inc
@@ -1,6 +1,6 @@
DEFAULTTUNE ?= "mips32r2"
-require conf/machine/include/tune-mips32.inc
+require conf/machine/include/mips/tune-mips32.inc
TUNEVALID[mips32r2] = "Enable mips32r2 specific processor optimizations"
TUNECONFLICTS[mips32r2] = "n64 n32"
diff --git a/meta/conf/machine/include/tune-mips32r6.inc b/meta/conf/machine/include/mips/tune-mips32r6.inc
index 9904cc0b11..9904cc0b11 100644
--- a/meta/conf/machine/include/tune-mips32r6.inc
+++ b/meta/conf/machine/include/mips/tune-mips32r6.inc
diff --git a/meta/conf/machine/include/mips/tune-mips64.inc b/meta/conf/machine/include/mips/tune-mips64.inc
new file mode 100644
index 0000000000..a9080159fc
--- /dev/null
+++ b/meta/conf/machine/include/mips/tune-mips64.inc
@@ -0,0 +1,3 @@
+DEFAULTTUNE ?= "mips64"
+
+require conf/machine/include/mips/tune-mips32r2.inc
diff --git a/meta/conf/machine/include/tune-mips64r2.inc b/meta/conf/machine/include/mips/tune-mips64r2.inc
index 6337abb09f..e9ca4201ff 100644
--- a/meta/conf/machine/include/tune-mips64r2.inc
+++ b/meta/conf/machine/include/mips/tune-mips64r2.inc
@@ -1,6 +1,6 @@
DEFAULTTUNE ?= "mips64r2"
-require conf/machine/include/tune-mips64.inc
+require conf/machine/include/mips/tune-mips64.inc
TUNEVALID[mips64r2] = "Enable mips64r2 specific processor optimizations"
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mips64r2', ' -march=mips64r2', '', d)}"
@@ -12,11 +12,13 @@ TUNE_FEATURES:tune-mips64r2 = "${TUNE_FEATURES:tune-mips64} mips64r2"
BASE_LIB:tune-mips64r2 = "lib64"
MIPSPKGSFX_VARIANT:tune-mips64r2 = "mips64r2"
PACKAGE_EXTRA_ARCHS:tune-mips64r2 = "mips64 mips64r2"
+QEMU_EXTRAOPTIONS_mips64r2 = " -cpu MIPS64R2-generic"
TUNE_FEATURES:tune-mips64r2el = "${TUNE_FEATURES:tune-mips64el} mips64r2"
BASE_LIB:tune-mips64r2el = "lib64"
MIPSPKGSFX_VARIANT:tune-mips64r2el = "mips64r2el"
PACKAGE_EXTRA_ARCHS:tune-mips64r2el = "mips64el mips64r2el"
+QEMU_EXTRAOPTIONS_mips64r2el = " -cpu MIPS64R2-generic"
# MIPS 64r2 Soft Float
AVAILTUNES += "mips64r2-nf mips64r2el-nf"
@@ -25,11 +27,13 @@ TUNE_FEATURES:tune-mips64r2-nf = "${TUNE_FEATURES:tune-mips64-nf} mips64r2"
BASE_LIB:tune-mips64r2-nf = "lib64"
MIPSPKGSFX_VARIANT:tune-mips64r2-nf = "${TUNE_ARCH}"
PACKAGE_EXTRA_ARCHS:tune-mips64r2-nf = "mips64-nf mips64r2-nf"
+QEMU_EXTRAOPTIONS_mips64r2-nf = " -cpu MIPS64R2-generic"
TUNE_FEATURES:tune-mips64r2el-nf = "${TUNE_FEATURES:tune-mips64el-nf} mips64r2"
BASE_LIB:tune-mips64r2el-nf = "lib64"
MIPSPKGSFX_VARIANT:tune-mips64r2el-nf = "${TUNE_ARCH}"
PACKAGE_EXTRA_ARCHS:tune-mips64r2el-nf = "mips64el-nf mips64r2el-nf"
+QEMU_EXTRAOPTIONS_mips64r2el-nf = " -cpu MIPS64R2-generic"
# MIPS 64r2 n32
AVAILTUNES += "mips64r2-n32 mips64r2el-n32"
@@ -38,11 +42,13 @@ TUNE_FEATURES:tune-mips64r2-n32 = "${TUNE_FEATURES:tune-mips64-n32} mips64r2"
BASE_LIB:tune-mips64r2-n32 = "lib32"
MIPSPKGSFX_VARIANT:tune-mips64r2-n32 = "${TUNE_ARCH}"
PACKAGE_EXTRA_ARCHS:tune-mips64r2-n32 = "mips64-n32 mips64r2-n32"
+QEMU_EXTRAOPTIONS_mips64r2-n32 = " -cpu MIPS64R2-generic"
TUNE_FEATURES:tune-mips64r2el-n32 = "${TUNE_FEATURES:tune-mips64el-n32} mips64r2"
BASE_LIB:tune-mips64r2el-n32 = "lib32"
MIPSPKGSFX_VARIANT:tune-mips64r2el-n32 = "${TUNE_ARCH}"
PACKAGE_EXTRA_ARCHS:tune-mips64r2el-n32 = "mips64el-n32 mips64r2el-n32"
+QEMU_EXTRAOPTIONS_mips64r2el-n32 = " -cpu MIPS64R2-generic"
# MIPS 64r2 n32 and Soft Float
AVAILTUNES += "mips64r2-nf-n32 mips64r2el-nf-n32"
@@ -51,11 +57,13 @@ TUNE_FEATURES:tune-mips64r2-nf-n32 = "${TUNE_FEATURES:tune-mips64-nf-n32} mips64
BASE_LIB:tune-mips64r2-nf-n32 = "lib32"
MIPSPKGSFX_VARIANT:tune-mips64r2-nf-n32 = "${TUNE_ARCH}"
PACKAGE_EXTRA_ARCHS:tune-mips64r2-nf-n32 = "mips64-nf-n32 mips64r2-nf-n32"
+QEMU_EXTRAOPTIONS_mips64r2-nf-n32 = " -cpu MIPS64R2-generic"
TUNE_FEATURES:tune-mips64r2el-nf-n32 = "${TUNE_FEATURES:tune-mips64el-nf-n32} mips64r2"
BASE_LIB:tune-mips64r2el-nf-n32 = "lib32"
MIPSPKGSFX_VARIANT:tune-mips64r2el-nf-n32 = "${TUNE_ARCH}"
PACKAGE_EXTRA_ARCHS:tune-mips64r2el-nf-n32 = "mips64el-nf-n32 mips64r2el-nf-n32"
+QEMU_EXTRAOPTIONS_mips64r2el-nf-32 = " -cpu MIPS64R2-generic"
# MIPS 64r2 o32
AVAILTUNES += "mips64r2-o32 mips64r2el-o32"
@@ -64,11 +72,13 @@ TUNE_FEATURES:tune-mips64r2-o32 = "${TUNE_FEATURES:tune-mips64-o32} mips64r2"
BASE_LIB:tune-mips64r2-o32 = "lib"
MIPSPKGSFX_VARIANT:tune-mips64r2-o32 = "${TUNE_ARCH}"
PACKAGE_EXTRA_ARCHS:tune-mips64r2-o32 = "mips mips64-o32 mips64r2-o32"
+QEMU_EXTRAOPTIONS_mips64r2-o32 = " -cpu MIPS64R2-generic"
TUNE_FEATURES:tune-mips64r2el-o32 = "${TUNE_FEATURES:tune-mips64el-o32} mips64r2"
BASE_LIB:tune-mips64r2el-o32 = "lib"
MIPSPKGSFX_VARIANT:tune-mips64r2el-o32 = "${TUNE_ARCH}"
PACKAGE_EXTRA_ARCHS:tune-mips64r2el-o32 = "mipsel mips64el-o32 mips64r2el-o32"
+QEMU_EXTRAOPTIONS_mips64r2el-o32 = " -cpu MIPS64R2-generic"
# MIPS 64r2 o32 and Soft Float
AVAILTUNES += "mips64r2-nf-o32 mips64r2el-nf-o32"
@@ -77,8 +87,10 @@ TUNE_FEATURES:tune-mips64r2-nf-o32 = "${TUNE_FEATURES:tune-mips64-nf-o32} mips64
BASE_LIB:tune-mips64r2-nf-o32 = "lib"
MIPSPKGSFX_VARIANT:tune-mips64r2-nf-o32 = "${TUNE_ARCH}"
PACKAGE_EXTRA_ARCHS:tune-mips64r2-nf-o32 = "mips-nf mips64r2-nf-o32"
+QEMU_EXTRAOPTIONS_mips64r2-nf-o32 = " -cpu MIPS64R2-generic"
TUNE_FEATURES:tune-mips64r2el-nf-o32 = "${TUNE_FEATURES:tune-mips64el-nf-o32} mips64r2"
BASE_LIB:tune-mips64r2el-nf-o32 = "lib"
MIPSPKGSFX_VARIANT:tune-mips64r2el-nf-o32 = "${TUNE_ARCH}"
PACKAGE_EXTRA_ARCHS:tune-mips64r2el-nf-o32 = "mipsel-nf mips64r2el-nf-o32"
+QEMU_EXTRAOPTIONS_mips64r2el-nf-o32 = " -cpu MIPS64R2-generic"
diff --git a/meta/conf/machine/include/tune-mips64r6.inc b/meta/conf/machine/include/mips/tune-mips64r6.inc
index b4a7e9ef1b..b4a7e9ef1b 100644
--- a/meta/conf/machine/include/tune-mips64r6.inc
+++ b/meta/conf/machine/include/mips/tune-mips64r6.inc
diff --git a/meta/conf/machine/include/tune-octeon.inc b/meta/conf/machine/include/mips/tune-octeon.inc
index 455c6a2f33..d4670e3259 100644
--- a/meta/conf/machine/include/tune-octeon.inc
+++ b/meta/conf/machine/include/mips/tune-octeon.inc
@@ -1,6 +1,6 @@
DEFAULTTUNE ?="octeon2"
-require conf/machine/include/tune-mips64.inc
+require conf/machine/include/mips/tune-mips64.inc
AVAILTUNES += "octeon2 octeon2_64 octeon3 octeon3_64"
diff --git a/meta/conf/machine/include/tune-power5.inc b/meta/conf/machine/include/powerpc/tune-power5.inc
index e70e401217..e70e401217 100644
--- a/meta/conf/machine/include/tune-power5.inc
+++ b/meta/conf/machine/include/powerpc/tune-power5.inc
diff --git a/meta/conf/machine/include/tune-power6.inc b/meta/conf/machine/include/powerpc/tune-power6.inc
index eaf89515ca..eaf89515ca 100644
--- a/meta/conf/machine/include/tune-power6.inc
+++ b/meta/conf/machine/include/powerpc/tune-power6.inc
diff --git a/meta/conf/machine/include/tune-power7.inc b/meta/conf/machine/include/powerpc/tune-power7.inc
index 4531ddd85f..4531ddd85f 100644
--- a/meta/conf/machine/include/tune-power7.inc
+++ b/meta/conf/machine/include/powerpc/tune-power7.inc
diff --git a/meta/conf/machine/include/powerpc/tune-power8.inc b/meta/conf/machine/include/powerpc/tune-power8.inc
new file mode 100644
index 0000000000..ee10f2428f
--- /dev/null
+++ b/meta/conf/machine/include/powerpc/tune-power8.inc
@@ -0,0 +1,31 @@
+DEFAULTTUNE ?= "ppc64p8le"
+
+require conf/machine/include/powerpc/arch-powerpc64.inc
+
+TUNEVALID[power8] = "Enable IBM Power8 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'power8', ' -mcpu=power8', '', d)}"
+
+AVAILTUNES += "ppcp8 ppc64p8 ppcp8le ppc64p8le"
+
+TUNE_FEATURES:tune-ppcp8 = "m32 fpu-hard power8 altivec bigendian"
+BASE_LIB:tune-ppcp8 = "lib"
+TUNE_PKGARCH:tune-ppcp8 = "ppcp8"
+PACKAGE_EXTRA_ARCHS:tune-ppcp8 = "${PACKAGE_EXTRA_ARCHS:tune-powerpc} ppcp8"
+
+TUNE_FEATURES:tune-ppc64p8 = "m64 fpu-hard power8 altivec bigendian"
+BASE_LIB:tune-ppc64p8 = "lib64"
+TUNE_PKGARCH:tune-ppc64p8 = "ppc64p8"
+PACKAGE_EXTRA_ARCHS:tune-ppc64p8 = "${PACKAGE_EXTRA_ARCHS:tune-powerpc64} ppc64p8"
+
+TUNE_FEATURES:tune-ppcp8le = "m32 fpu-hard power8 altivec"
+BASE_LIB:tune-ppcp8le = "lib"
+TUNE_PKGARCH:tune-ppcp8le = "ppcp8le"
+PACKAGE_EXTRA_ARCHS:tune-ppcp8le = "${PACKAGE_EXTRA_ARCHS:tune-powerpcle} ppcp8le"
+
+TUNE_FEATURES:tune-ppc64p8le = "m64 fpu-hard power8 altivec"
+BASE_LIB:tune-ppc64p8le = "lib64"
+TUNE_PKGARCH:tune-ppc64p8le = "ppc64p8le"
+PACKAGE_EXTRA_ARCHS:tune-ppc64p8le = "${PACKAGE_EXTRA_ARCHS:tune-powerpc64le} ppc64p8le"
+
+# glibc configure options to get power8 specific library
+GLIBC_EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'power8', '--with-cpu=power8', '', d)}"
diff --git a/meta/conf/machine/include/tune-power9.inc b/meta/conf/machine/include/powerpc/tune-power9.inc
index 6744731f8e..6744731f8e 100644
--- a/meta/conf/machine/include/tune-power9.inc
+++ b/meta/conf/machine/include/powerpc/tune-power9.inc
diff --git a/meta/conf/machine/include/tune-ppc476.inc b/meta/conf/machine/include/powerpc/tune-ppc476.inc
index 54152cb941..54152cb941 100644
--- a/meta/conf/machine/include/tune-ppc476.inc
+++ b/meta/conf/machine/include/powerpc/tune-ppc476.inc
diff --git a/meta/conf/machine/include/tune-ppc603e.inc b/meta/conf/machine/include/powerpc/tune-ppc603e.inc
index 8beec00f24..28680bdb3c 100644
--- a/meta/conf/machine/include/tune-ppc603e.inc
+++ b/meta/conf/machine/include/powerpc/tune-ppc603e.inc
@@ -9,6 +9,3 @@ AVAILTUNES += "ppc603e"
TUNE_FEATURES:tune-ppc603e = "m32 fpu-hard ppc603e bigendian"
TUNE_PKGARCH:tune-ppc603e = "ppc603e"
PACKAGE_EXTRA_ARCHS:tune-ppc603e = "${PACKAGE_EXTRA_ARCHS:tune-powerpc} ppc603e"
-
-# glibc configure options to get 603e specific library (for sqrt)
-GLIBC_EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'ppc603e', '-with-cpu=603e', '', d)}"
diff --git a/meta/conf/machine/include/tune-ppc7400.inc b/meta/conf/machine/include/powerpc/tune-ppc7400.inc
index 1e2c9fc2ce..49b94f5ee1 100644
--- a/meta/conf/machine/include/tune-ppc7400.inc
+++ b/meta/conf/machine/include/powerpc/tune-ppc7400.inc
@@ -9,6 +9,3 @@ AVAILTUNES += "ppc7400"
TUNE_FEATURES:tune-ppc7400 = "m32 fpu-hard ppc7400 altivec bigendian"
TUNE_PKGARCH:tune-ppc7400 = "ppc7400"
PACKAGE_EXTRA_ARCHS:tune-ppc7400 = "${PACKAGE_EXTRA_ARCHS:tune-powerpc} ppc7400"
-
-# glibc configure options to get 7400 specific library (for sqrt)
-#GLIBC_EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'ppc7400', '--with-cpu=power4', '', d)}"
diff --git a/meta/conf/machine/include/tune-ppce300c2.inc b/meta/conf/machine/include/powerpc/tune-ppce300c2.inc
index 90171c76d5..90171c76d5 100644
--- a/meta/conf/machine/include/tune-ppce300c2.inc
+++ b/meta/conf/machine/include/powerpc/tune-ppce300c2.inc
diff --git a/meta/conf/machine/include/tune-ppce300c3.inc b/meta/conf/machine/include/powerpc/tune-ppce300c3.inc
index b74b6ad976..31aff51af3 100644
--- a/meta/conf/machine/include/tune-ppce300c3.inc
+++ b/meta/conf/machine/include/powerpc/tune-ppce300c3.inc
@@ -11,9 +11,6 @@ TUNE_PKGARCH:tune-ppce300c3 = "ppce300c3"
PACKAGE_EXTRA_ARCHS:tune-ppce300c3 = "${PACKAGE_EXTRA_ARCHS:tune-powerpc} ppce300c3"
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'ppce300c3', ' -mcpu=e300c3', '', d)}"
-# glibc config options to make use of e300c3 (603e) specific sqrt/sqrtf routines
-GLIBC_EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'ppce300c3', '--with-cpu=e300c3', '', d)}"
-
# soft-float
TUNEVALID[ppce300c3-nf] = "Enable ppce300c3 specific processor optimizations (no fpu)"
TUNE_FEATURES:tune-ppce300c3-nf = "${TUNE_FEATURES:tune-powerpc-nf} ppce300c3-nf"
diff --git a/meta/conf/machine/include/tune-ppce500.inc b/meta/conf/machine/include/powerpc/tune-ppce500.inc
index aceab321b7..aceab321b7 100644
--- a/meta/conf/machine/include/tune-ppce500.inc
+++ b/meta/conf/machine/include/powerpc/tune-ppce500.inc
diff --git a/meta/conf/machine/include/tune-ppce500mc.inc b/meta/conf/machine/include/powerpc/tune-ppce500mc.inc
index e3524a10ca..036f8b2631 100644
--- a/meta/conf/machine/include/tune-ppce500mc.inc
+++ b/meta/conf/machine/include/powerpc/tune-ppce500mc.inc
@@ -10,8 +10,5 @@ TUNE_FEATURES:tune-ppce500mc = "m32 fpu-hard ppce500mc bigendian"
TUNE_PKGARCH:tune-ppce500mc = "ppce500mc"
PACKAGE_EXTRA_ARCHS:tune-ppce500mc = "${PACKAGE_EXTRA_ARCHS:tune-powerpc} ppce500mc"
-# glibc configure options to get e500mc specific library (for sqrt)
-GLIBC_EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'ppce500mc', '-with-cpu=e500mc', '', d)}"
-
# pass -mcpu=e500mc for ppce500mc kernel cross compile
TARGET_CC_KERNEL_ARCH = "-mcpu=e500mc"
diff --git a/meta/conf/machine/include/tune-ppce500v2.inc b/meta/conf/machine/include/powerpc/tune-ppce500v2.inc
index 461164d818..461164d818 100644
--- a/meta/conf/machine/include/tune-ppce500v2.inc
+++ b/meta/conf/machine/include/powerpc/tune-ppce500v2.inc
diff --git a/meta/conf/machine/include/tune-ppce5500.inc b/meta/conf/machine/include/powerpc/tune-ppce5500.inc
index 2cf7b1737c..4915b81ee4 100644
--- a/meta/conf/machine/include/tune-ppce5500.inc
+++ b/meta/conf/machine/include/powerpc/tune-ppce5500.inc
@@ -16,8 +16,5 @@ BASE_LIB:tune-ppc64e5500 = "lib64"
TUNE_PKGARCH:tune-ppc64e5500 = "ppc64e5500"
PACKAGE_EXTRA_ARCHS:tune-ppc64e5500 = "${PACKAGE_EXTRA_ARCHS:tune-powerpc64} ppc64e5500"
-# glibc configure options to get e5500 specific library (for sqrt)
-GLIBC_EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'e5500', '--with-cpu=e5500', '', d)}"
-
# QEMU usermode fails with invalid instruction error (YOCTO: #10304)
MACHINE_FEATURES_BACKFILL_CONSIDERED:append = "${@bb.utils.contains('TUNE_FEATURES', 'e5500', ' qemu-usermode', '', d)}"
diff --git a/meta/conf/machine/include/tune-ppce6500.inc b/meta/conf/machine/include/powerpc/tune-ppce6500.inc
index e78de350ad..f6310ab4c4 100644
--- a/meta/conf/machine/include/tune-ppce6500.inc
+++ b/meta/conf/machine/include/powerpc/tune-ppce6500.inc
@@ -16,9 +16,5 @@ BASE_LIB:tune-ppc64e6500 = "lib64"
TUNE_PKGARCH:tune-ppc64e6500 = "ppc64e6500"
PACKAGE_EXTRA_ARCHS:tune-ppc64e6500 = "${PACKAGE_EXTRA_ARCHS:tune-powerpc64} ppc64e6500"
-# glibc configure options to get e6500 specific library
-GLIBC_EXTRA_OECONF:powerpc64 += "${@bb.utils.contains('TUNE_FEATURES', 'e6500', '--with-cpu=e6500', '', d)}"
-GLIBC_EXTRA_OECONF:powerpc += "${@bb.utils.contains('TUNE_FEATURES', 'e6500', '--with-cpu=e6500', '', d)}"
-
# QEMU usermode fails with invalid instruction error (YOCTO: #10304)
MACHINE_FEATURES_BACKFILL_CONSIDERED:append = "${@bb.utils.contains('TUNE_FEATURES', 'e6500', ' qemu-usermode', '', d)}"
diff --git a/meta/conf/machine/include/qemu.inc b/meta/conf/machine/include/qemu.inc
index c7136da711..bb7aec7675 100644
--- a/meta/conf/machine/include/qemu.inc
+++ b/meta/conf/machine/include/qemu.inc
@@ -3,10 +3,12 @@ PREFERRED_PROVIDER_virtual/egl ?= "mesa"
PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
PREFERRED_PROVIDER_virtual/libgles1 ?= "mesa"
PREFERRED_PROVIDER_virtual/libgles2 ?= "mesa"
+PREFERRED_PROVIDER_virtual/libgles3 ?= "mesa"
XSERVER ?= "xserver-xorg \
${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'mesa-driver-swrast xserver-xorg-extension-glx', '', d)} \
xf86-video-fbdev \
+ xf86-video-modesetting \
"
MACHINE_FEATURES = "alsa bluetooth usbgadget screen vfat"
@@ -21,8 +23,6 @@ RDEPENDS:${KERNEL_PACKAGE_NAME}-base = ""
# Use a common kernel recipe for all QEMU machines
PREFERRED_PROVIDER_virtual/kernel ??= "linux-yocto"
-EXTRA_IMAGEDEPENDS += "qemu-system-native qemu-helper-native"
-
# Provide the nfs server kernel module for all qemu images
KERNEL_FEATURES:append:pn-linux-yocto = " features/nfsd/nfsd-enable.scc"
KERNEL_FEATURES:append:pn-linux-yocto-rt = " features/nfsd/nfsd-enable.scc"
diff --git a/meta/conf/machine/include/qemuboot-x86.inc b/meta/conf/machine/include/qemuboot-x86.inc
deleted file mode 100644
index d3b91070a8..0000000000
--- a/meta/conf/machine/include/qemuboot-x86.inc
+++ /dev/null
@@ -1,14 +0,0 @@
-# For runqemu
-IMAGE_CLASSES += "qemuboot"
-QB_SMP = "-smp 4"
-QB_CPU:x86 = "-cpu IvyBridge -machine q35"
-QB_CPU_KVM:x86 = "-cpu IvyBridge -machine q35"
-
-QB_CPU:x86-64 = "-cpu IvyBridge -machine q35"
-QB_CPU_KVM:x86-64 = "-cpu IvyBridge -machine q35"
-
-QB_AUDIO_DRV = "alsa"
-QB_AUDIO_OPT = "-soundhw ac97,es1370"
-QB_KERNEL_CMDLINE_APPEND = "oprofile.timer=1 tsc=reliable no_timer_check rcupdate.rcu_expedited=1"
-QB_OPT_APPEND = "-usb -device usb-tablet"
-
diff --git a/meta/conf/machine/include/riscv/arch-riscv.inc b/meta/conf/machine/include/riscv/arch-riscv.inc
index e5611a12a6..230a266563 100644
--- a/meta/conf/machine/include/riscv/arch-riscv.inc
+++ b/meta/conf/machine/include/riscv/arch-riscv.inc
@@ -7,6 +7,8 @@ TUNE_PKGARCH = "${TUNE_PKGARCH:tune-${DEFAULTTUNE}}"
TUNE_CCARGS:append = "${@bb.utils.contains('TUNE_FEATURES', 'riscv64nf', ' -mabi=lp64', ' ', d)}"
TUNE_CCARGS:append = "${@bb.utils.contains('TUNE_FEATURES', 'riscv32nf', ' -mabi=ilp32', ' ', d)}"
+TUNE_CCARGS:append = "${@bb.utils.contains('TUNE_FEATURES', 'riscv64nc', ' -march=rv64imafd', ' ', d)}"
+
# Fix: ld: unrecognized option '--hash-style=sysv'
LINKER_HASH_STYLE:libc-newlib = ""
# Fix: ld: unrecognized option '--hash-style=gnu'
diff --git a/meta/conf/machine/include/riscv/qemuriscv.inc b/meta/conf/machine/include/riscv/qemuriscv.inc
index 14eaf5d64a..d01d988eee 100644
--- a/meta/conf/machine/include/riscv/qemuriscv.inc
+++ b/meta/conf/machine/include/riscv/qemuriscv.inc
@@ -3,14 +3,13 @@ PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot"
require conf/machine/include/qemu.inc
require conf/machine/include/riscv/tune-riscv.inc
-MACHINE_FEATURES = "screen keyboard ext2 ext3 serial"
+MACHINE_FEATURES += "keyboard ext2 ext3 serial"
KERNEL_IMAGETYPE = "Image"
KERNEL_IMAGETYPES += "uImage"
KEEPUIMAGE = "no"
SERIAL_CONSOLES ?= "115200;ttyS0 115200;hvc0"
-SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
IMAGE_FSTYPES += "ext4 wic.qcow2"
@@ -26,7 +25,7 @@ UBOOT_ENTRYPOINT:riscv32 = "0x80400000"
UBOOT_ENTRYPOINT:riscv64 = "0x80200000"
# qemuboot options
-QB_SMP = "-smp 4"
+QB_SMP ?= "-smp 4"
QB_KERNEL_CMDLINE_APPEND = "earlycon=sbi"
QB_MACHINE = "-machine virt"
QB_DEFAULT_BIOS = "fw_jump.elf"
@@ -34,6 +33,7 @@ QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no"
QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=net0,mac=@MAC@"
QB_ROOTFS_OPT = "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-device,drive=disk0"
QB_SERIAL_OPT = "-device virtio-serial-device -chardev null,id=virtcon -device virtconsole,chardev=virtcon"
-QB_TCPSERIAL_OPT = " -device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1 -device virtconsole,chardev=virtcon"
+QB_TCPSERIAL_OPT = " -device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1,nodelay=on -device virtconsole,chardev=virtcon"
QB_GRAPHICS = "-device bochs-display"
-QB_OPT_APPEND = "-device virtio-mouse-pci -device virtio-keyboard-pci"
+QB_OPT_APPEND = "-device qemu-xhci -device usb-tablet -device usb-kbd"
+QB_OPT_APPEND:riscv32 = "-device virtio-tablet-pci -device virtio-keyboard-pci"
diff --git a/meta/conf/machine/include/riscv/tune-riscv.inc b/meta/conf/machine/include/riscv/tune-riscv.inc
index cc2896f277..804712077e 100644
--- a/meta/conf/machine/include/riscv/tune-riscv.inc
+++ b/meta/conf/machine/include/riscv/tune-riscv.inc
@@ -6,9 +6,11 @@ TUNEVALID[riscv32] = "Enable 32-bit RISC-V optimizations"
TUNEVALID[riscv64nf] = "Enable 64-bit RISC-V optimizations no floating point"
TUNEVALID[riscv32nf] = "Enable 32-bit RISC-V optimizations no floating point"
+TUNEVALID[riscv64nc] = "Enable 64-bit RISC-V optimizations without compressed instructions"
+
TUNEVALID[bigendian] = "Big endian mode"
-AVAILTUNES += "riscv64 riscv32 riscv64nf riscv32nf"
+AVAILTUNES += "riscv64 riscv32 riscv64nc riscv64nf riscv32nf"
# Default
TUNE_FEATURES:tune-riscv64 = "riscv64"
@@ -31,3 +33,9 @@ TUNE_FEATURES:tune-riscv32nf = "${TUNE_FEATURES:tune-riscv32} riscv32nf"
TUNE_ARCH:tune-riscv32nf = "riscv32"
TUNE_PKGARCH:tune-riscv32nf = "riscv32nf"
PACKAGE_EXTRA_ARCHS:tune-riscv32nf = "riscv32nf"
+
+# no compressed
+TUNE_FEATURES:tune-riscv64nc = "${TUNE_FEATURES:tune-riscv64} riscv64nc"
+TUNE_ARCH:tune-riscv64nc = "riscv64"
+TUNE_PKGARCH:tune-riscv64nc = "riscv64nc"
+PACKAGE_EXTRA_ARCHS:tune-riscv64nc = "riscv64nc"
diff --git a/meta/conf/machine/include/tune-sh3.inc b/meta/conf/machine/include/sh/tune-sh3.inc
index 77d0b71fc4..77d0b71fc4 100644
--- a/meta/conf/machine/include/tune-sh3.inc
+++ b/meta/conf/machine/include/sh/tune-sh3.inc
diff --git a/meta/conf/machine/include/tune-sh4.inc b/meta/conf/machine/include/sh/tune-sh4.inc
index e21ede36c4..b4893a4748 100644
--- a/meta/conf/machine/include/tune-sh4.inc
+++ b/meta/conf/machine/include/sh/tune-sh4.inc
@@ -6,7 +6,7 @@ require conf/machine/include/sh/arch-sh.inc
TUNEVALID[sh4] = "Enable SH4 optimizations"
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'sh4', ' -m4', '', d)}"
-# NOTE: If you want to optimize to sh4a, conf/machine/include/tune-sh4a.inc.
+# NOTE: If you want to optimize to sh4a, conf/machine/include/sh/tune-sh4a.inc.
# But it is not compatible for sh4.
# The binary optimized by m4a doesn't operate on sh4. It works on sh4a only.
TUNEVALID[sh4a] = "Enable SH4a optimizations"
diff --git a/meta/conf/machine/include/tune-cortexa72.inc b/meta/conf/machine/include/tune-cortexa72.inc
deleted file mode 100644
index 2a510bd45b..0000000000
--- a/meta/conf/machine/include/tune-cortexa72.inc
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFAULTTUNE ?= "cortexa72"
-
-TUNEVALID[cortexa72] = "Enable Cortex-A72 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa72', ' -mcpu=cortex-a72', '', d)}"
-
-require conf/machine/include/arm/arch-armv8a.inc
-
-# Little Endian base configs
-AVAILTUNES += "cortexa72"
-ARMPKGARCH:tune-cortexa72 = "cortexa72"
-TUNE_FEATURES:tune-cortexa72 = "${TUNE_FEATURES:tune-armv8a-crc-crypto} cortexa72"
-PACKAGE_EXTRA_ARCHS:tune-cortexa72 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa72"
-BASE_LIB:tune-cortexa72 = "lib64"
diff --git a/meta/conf/machine/include/tune-mips64.inc b/meta/conf/machine/include/tune-mips64.inc
deleted file mode 100644
index 9be0e0f8d9..0000000000
--- a/meta/conf/machine/include/tune-mips64.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-DEFAULTTUNE ?= "mips64"
-
-require conf/machine/include/tune-mips32r2.inc
diff --git a/meta/conf/machine/include/x86/qemuboot-x86.inc b/meta/conf/machine/include/x86/qemuboot-x86.inc
new file mode 100644
index 0000000000..6ae03633ae
--- /dev/null
+++ b/meta/conf/machine/include/x86/qemuboot-x86.inc
@@ -0,0 +1,13 @@
+# For runqemu
+IMAGE_CLASSES += "qemuboot"
+QB_SMP ?= "-smp 4"
+QB_CPU:x86 ?= "-cpu IvyBridge -machine q35,i8042=off"
+QB_CPU_KVM:x86 ?= "-cpu IvyBridge -machine q35,i8042=off"
+
+QB_CPU:x86-64 ?= "-cpu IvyBridge -machine q35,i8042=off"
+QB_CPU_KVM:x86-64 ?= "-cpu IvyBridge -machine q35,i8042=off"
+
+QB_AUDIO_DRV = "alsa"
+QB_AUDIO_OPT = "-device AC97"
+QB_KERNEL_CMDLINE_APPEND = "oprofile.timer=1 tsc=reliable no_timer_check rcupdate.rcu_expedited=1"
+QB_OPT_APPEND = "-usb -device usb-tablet -usb -device usb-kbd"
diff --git a/meta/conf/machine/include/tune-atom.inc b/meta/conf/machine/include/x86/tune-atom.inc
index 5e1bb74c6c..6b84fffc3f 100644
--- a/meta/conf/machine/include/tune-atom.inc
+++ b/meta/conf/machine/include/x86/tune-atom.inc
@@ -1,2 +1,2 @@
# Atom tunings are the same as core2 for now...
-require conf/machine/include/tune-core2.inc
+require conf/machine/include/x86/tune-core2.inc
diff --git a/meta/conf/machine/include/tune-c3.inc b/meta/conf/machine/include/x86/tune-c3.inc
index afae82541d..afae82541d 100644
--- a/meta/conf/machine/include/tune-c3.inc
+++ b/meta/conf/machine/include/x86/tune-c3.inc
diff --git a/meta/conf/machine/include/tune-core2.inc b/meta/conf/machine/include/x86/tune-core2.inc
index a551cad4d5..082fd4efc3 100644
--- a/meta/conf/machine/include/tune-core2.inc
+++ b/meta/conf/machine/include/x86/tune-core2.inc
@@ -9,7 +9,7 @@
DEFAULTTUNE ?= "core2-32"
# Include the previous tune to pull in PACKAGE_EXTRA_ARCHS
-require conf/machine/include/tune-i686.inc
+require conf/machine/include/x86/tune-i686.inc
# Extra tune features
TUNEVALID[core2] = "Enable core2 specific processor optimizations"
@@ -21,18 +21,18 @@ TUNE_FEATURES:tune-core2-32 = "${TUNE_FEATURES:tune-x86} core2"
BASE_LIB:tune-core2-32 = "lib"
TUNE_PKGARCH:tune-core2-32 = "core2-32"
PACKAGE_EXTRA_ARCHS:tune-core2-32 = "${PACKAGE_EXTRA_ARCHS:tune-i686} core2-32"
-QEMU_EXTRAOPTIONS_core2-32 = " -cpu n270"
+QEMU_EXTRAOPTIONS_core2-32 = " -cpu Nehalem,check=false"
AVAILTUNES += "core2-64"
TUNE_FEATURES:tune-core2-64 = "${TUNE_FEATURES:tune-x86-64} core2"
BASE_LIB:tune-core2-64 = "lib64"
TUNE_PKGARCH:tune-core2-64 = "core2-64"
PACKAGE_EXTRA_ARCHS:tune-core2-64 = "${PACKAGE_EXTRA_ARCHS:tune-x86-64} core2-64"
-QEMU_EXTRAOPTIONS_core2-64 = " -cpu core2duo"
+QEMU_EXTRAOPTIONS_core2-64 = " -cpu Nehalem,check=false"
AVAILTUNES += "core2-64-x32"
TUNE_FEATURES:tune-core2-64-x32 = "${TUNE_FEATURES:tune-x86-64-x32} core2"
BASE_LIB:tune-core2-64-x32 = "libx32"
TUNE_PKGARCH:tune-core2-64-x32 = "core2-64-x32"
PACKAGE_EXTRA_ARCHS:tune-core2-64-x32 = "${PACKAGE_EXTRA_ARCHS:tune-x86-64-x32} core2-64-x32"
-QEMU_EXTRAOPTIONS_core2-64-x32 = " -cpu core2duo"
+QEMU_EXTRAOPTIONS_core2-64-x32 = " -cpu Nehalem,check=false"
diff --git a/meta/conf/machine/include/tune-corei7.inc b/meta/conf/machine/include/x86/tune-corei7.inc
index bf1ac7a93b..7798288a74 100644
--- a/meta/conf/machine/include/tune-corei7.inc
+++ b/meta/conf/machine/include/x86/tune-corei7.inc
@@ -9,7 +9,7 @@
DEFAULTTUNE ?= "corei7-64"
# Include the previous tune to pull in PACKAGE_EXTRA_ARCHS
-require conf/machine/include/tune-core2.inc
+require conf/machine/include/x86/tune-core2.inc
# Extra tune features
TUNEVALID[corei7] = "Enable corei7 specific processor optimizations"
diff --git a/meta/conf/machine/include/tune-i586-nlp.inc b/meta/conf/machine/include/x86/tune-i586-nlp.inc
index ecfbf9f1b2..ecfbf9f1b2 100644
--- a/meta/conf/machine/include/tune-i586-nlp.inc
+++ b/meta/conf/machine/include/x86/tune-i586-nlp.inc
diff --git a/meta/conf/machine/include/tune-i586.inc b/meta/conf/machine/include/x86/tune-i586.inc
index b1299e9e91..b1299e9e91 100644
--- a/meta/conf/machine/include/tune-i586.inc
+++ b/meta/conf/machine/include/x86/tune-i586.inc
diff --git a/meta/conf/machine/include/tune-i686.inc b/meta/conf/machine/include/x86/tune-i686.inc
index 3feb4df8ba..293d81e6c5 100644
--- a/meta/conf/machine/include/tune-i686.inc
+++ b/meta/conf/machine/include/x86/tune-i686.inc
@@ -13,7 +13,7 @@ DEFAULTTUNE ?= "i686"
X86ARCH32 ?= "i686"
# Include the previous tune to pull in PACKAGE_EXTRA_ARCHS
-require conf/machine/include/tune-i586.inc
+require conf/machine/include/x86/tune-i586.inc
# Extra tune features
TUNEVALID[i686] = "Enable i686 specific processor optimizations"
diff --git a/meta/conf/machine/include/x86/tune-x86-64-v3.inc b/meta/conf/machine/include/x86/tune-x86-64-v3.inc
new file mode 100644
index 0000000000..254f03c590
--- /dev/null
+++ b/meta/conf/machine/include/x86/tune-x86-64-v3.inc
@@ -0,0 +1,31 @@
+# Settings for the GCC(1) cpu-type "x86-64-v3":
+#
+# CPUs with AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE.
+# (but not AVX512).
+# See https://www.phoronix.com/news/GCC-11-x86-64-Feature-Levels for details.
+#
+# This tune is recommended for Intel Haswell/AMD Excavator CPUs (and later).
+#
+DEFAULTTUNE ?= "x86-64-v3"
+
+# Include the previous tune to pull in PACKAGE_EXTRA_ARCHS
+require conf/machine/include/x86/tune-corei7.inc
+
+# Extra tune features
+TUNEVALID[x86-64-v3] = "Enable x86-64-v3 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'x86-64-v3', ' -march=x86-64-v3', '', d)}"
+
+# Extra tune selections
+AVAILTUNES += "x86-64-v3"
+TUNE_FEATURES:tune-x86-64-v3 = "${TUNE_FEATURES:tune-x86-64} x86-64-v3"
+BASE_LIB:tune-x86-64-v3 = "lib64"
+TUNE_PKGARCH:tune-x86-64-v3 = "x86-64-v3"
+PACKAGE_EXTRA_ARCHS:tune-x86-64-v3 = "${PACKAGE_EXTRA_ARCHS:tune-corei7-64} x86-64-v3"
+QEMU_EXTRAOPTIONS_x86-64-v3 = " -cpu Skylake-Client,check=false"
+
+AVAILTUNES += "x86-64-v3-x32"
+TUNE_FEATURES:tune-x86-64-v3-x32 = "${TUNE_FEATURES:tune-x86-64-x32} x86-64-v3"
+BASE_LIB:tune-x86-64-v3-x32 = "libx32"
+TUNE_PKGARCH:tune-x86-64-v3-x32 = "x86-64-v3-x32"
+PACKAGE_EXTRA_ARCHS:tune-x86-64-v3-x32 = "${PACKAGE_EXTRA_ARCHS:tune-corei7-64-x32} x86-64-v3-x32"
+QEMU_EXTRAOPTIONS_x86-64-v3-x32 = " -cpu Skylake-Client,check=false"
diff --git a/meta/conf/machine/include/x86-base.inc b/meta/conf/machine/include/x86/x86-base.inc
index ef6690b0b9..fc6c39148d 100644
--- a/meta/conf/machine/include/x86-base.inc
+++ b/meta/conf/machine/include/x86/x86-base.inc
@@ -18,7 +18,6 @@ SERIAL_CONSOLES ?= "115200;ttyS0"
# kernel-related variables
#
PREFERRED_PROVIDER_virtual/kernel ??= "linux-yocto"
-PREFERRED_VERSION_linux-yocto ??= "5.10%"
#
# XSERVER subcomponents, used to build the XSERVER variable
@@ -36,7 +35,7 @@ XSERVER_X86_I915 = "xf86-video-intel \
"
XSERVER_X86_I965 = "xf86-video-intel \
- ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'mesa-driver-i965', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'mesa-driver-crocus', '', d)} \
"
XSERVER_X86_VESA = "xf86-video-vesa"
diff --git a/meta/conf/machine/qemuarm.conf b/meta/conf/machine/qemuarm.conf
index f893f1a76a..943ce7c16a 100644
--- a/meta/conf/machine/qemuarm.conf
+++ b/meta/conf/machine/qemuarm.conf
@@ -2,25 +2,22 @@
#@NAME: QEMU Arm Cortex-A15 machine
#@DESCRIPTION: Machine configuration for running an ARMv7 system on QEMU
-require conf/machine/include/tune-cortexa15.inc
+require conf/machine/include/arm/armv7a/tune-cortexa15.inc
require conf/machine/include/qemu.inc
KERNEL_IMAGETYPE = "zImage"
-UBOOT_MACHINE ?= "qemu:arm_defconfig"
+UBOOT_MACHINE ?= "qemu_arm_defconfig"
SERIAL_CONSOLES ?= "115200;ttyAMA0 115200;hvc0"
-SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
# For runqemu
QB_SYSTEM_NAME = "qemu-system-arm"
QB_MACHINE = "-machine virt,highmem=off"
QB_CPU = "-cpu cortex-a15"
-QB_SMP = "-smp 4"
-# Standard Serial console
-QB_KERNEL_CMDLINE_APPEND = "vmalloc=256"
+QB_SMP ?= "-smp 4"
# For graphics to work we need to define the VGA device as well as the necessary USB devices
-QB_GRAPHICS = "-device VGA,edid=on"
+QB_GRAPHICS = "-device virtio-gpu-pci"
QB_OPT_APPEND = "-device qemu-xhci -device usb-tablet -device usb-kbd"
# Virtio Networking support
QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no"
@@ -29,6 +26,6 @@ QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=net0,mac=@MAC@"
QB_ROOTFS_OPT = "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-device,drive=disk0"
# Virtio serial console
QB_SERIAL_OPT = "-device virtio-serial-device -chardev null,id=virtcon -device virtconsole,chardev=virtcon"
-QB_TCPSERIAL_OPT = "-device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1 -device virtconsole,chardev=virtcon"
+QB_TCPSERIAL_OPT = "-device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1,nodelay=on -device virtconsole,chardev=virtcon"
KMACHINE:qemuarm = "qemuarma15"
diff --git a/meta/conf/machine/qemuarm64.conf b/meta/conf/machine/qemuarm64.conf
index 3dcb0d1b1e..a096d964db 100644
--- a/meta/conf/machine/qemuarm64.conf
+++ b/meta/conf/machine/qemuarm64.conf
@@ -2,30 +2,29 @@
#@NAME: QEMU ARMv8 machine
#@DESCRIPTION: Machine configuration for running an ARMv8 system on QEMU
-require conf/machine/include/tune-cortexa57.inc
+require conf/machine/include/arm/armv8a/tune-cortexa57.inc
require conf/machine/include/qemu.inc
KERNEL_IMAGETYPE = "Image"
-UBOOT_MACHINE ?= "qemu:arm64_defconfig"
+UBOOT_MACHINE ?= "qemu_arm64_defconfig"
SERIAL_CONSOLES ?= "115200;ttyAMA0 115200;hvc0"
-SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
# For runqemu
QB_SYSTEM_NAME = "qemu-system-aarch64"
QB_MACHINE = "-machine virt"
QB_CPU = "-cpu cortex-a57"
-QB_SMP = "-smp 4"
+QB_SMP ?= "-smp 4"
QB_CPU_KVM = "-cpu host -machine gic-version=3"
# For graphics to work we need to define the VGA device as well as the necessary USB devices
-QB_GRAPHICS = "-device VGA,edid=on"
+QB_GRAPHICS = "-device virtio-gpu-pci"
QB_OPT_APPEND = "-device qemu-xhci -device usb-tablet -device usb-kbd"
# Virtio Networking support
QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no"
-QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=net0,mac=@MAC@"
+QB_NETWORK_DEVICE = "-device virtio-net-pci,netdev=net0,mac=@MAC@"
# Virtio block device
-QB_ROOTFS_OPT = "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-device,drive=disk0"
+QB_ROOTFS_OPT = "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-pci,drive=disk0"
# Virtio serial console
-QB_SERIAL_OPT = "-device virtio-serial-device -chardev null,id=virtcon -device virtconsole,chardev=virtcon"
-QB_TCPSERIAL_OPT = "-device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1 -device virtconsole,chardev=virtcon"
+QB_SERIAL_OPT = "-device virtio-serial-pci -chardev null,id=virtcon -device virtconsole,chardev=virtcon"
+QB_TCPSERIAL_OPT = "-device virtio-serial-pci -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1,nodelay=on -device virtconsole,chardev=virtcon"
diff --git a/meta/conf/machine/qemuarmv5.conf b/meta/conf/machine/qemuarmv5.conf
index 7650c2f4a2..ecd2873d91 100644
--- a/meta/conf/machine/qemuarmv5.conf
+++ b/meta/conf/machine/qemuarmv5.conf
@@ -3,7 +3,7 @@
#@DESCRIPTION: Machine configuration for running an ARMv5 system on QEMU
require conf/machine/include/qemu.inc
-require conf/machine/include/tune-arm926ejs.inc
+require conf/machine/include/arm/armv5/tune-arm926ejs.inc
KERNEL_IMAGETYPE = "zImage"
@@ -12,9 +12,8 @@ SERIAL_CONSOLES ?= "115200;ttyAMA0 115200;ttyAMA1"
# For runqemu
QB_SYSTEM_NAME = "qemu-system-arm"
QB_MACHINE = "-machine versatilepb"
-QB_KERNEL_CMDLINE_APPEND = "vmalloc=256"
-QB_OPT_APPEND = "-usb -device usb-tablet"
-PREFERRED_VERSION_linux-yocto ??= "5.10%"
-QB_DTB = "${@oe.utils.version_less_or_equal('PREFERRED_VERSION_linux-yocto', '4.7', '', 'zImage-versatile-pb.dtb', d)}"
+QB_GRAPHICS = "-device virtio-gpu-pci"
+QB_OPT_APPEND = "-device qemu-xhci -device usb-tablet -device usb-kbd"
+QB_DTB ?= "zImage-versatile-pb.dtb"
-KMACHINE:qemuarmv5 = "qemuarm"
+KMACHINE:qemuarmv5 = "arm-versatile-926ejs"
diff --git a/meta/conf/machine/qemuloongarch64.conf b/meta/conf/machine/qemuloongarch64.conf
new file mode 100644
index 0000000000..675d525afd
--- /dev/null
+++ b/meta/conf/machine/qemuloongarch64.conf
@@ -0,0 +1,11 @@
+#@TYPE: Machine
+#@NAME: generic loongarch64 machine
+#@DESCRIPTION: Machine configuration for running a generic loongarch64
+
+require conf/machine/include/loongarch/qemuloongarch.inc
+
+XVISOR_PLAT = "loongarch/virt64"
+
+EXTRA_IMAGEDEPENDS += "u-boot"
+UBOOT_MACHINE = "qemu-loongarch64_smode_defconfig"
+UBOOT_ELF = "u-boot"
diff --git a/meta/conf/machine/qemumips.conf b/meta/conf/machine/qemumips.conf
index 9b602fcd1f..1cf21b92fe 100644
--- a/meta/conf/machine/qemumips.conf
+++ b/meta/conf/machine/qemumips.conf
@@ -3,8 +3,8 @@
#@DESCRIPTION: Machine configuration for running a MIPS system on QEMU
require conf/machine/include/qemu.inc
-require conf/machine/include/tune-mips32r2.inc
-require conf/machine/include/qemuboot-mips.inc
+require conf/machine/include/mips/tune-mips32r2.inc
+require conf/machine/include/mips/qemuboot-mips.inc
KERNEL_IMAGETYPE = "vmlinux"
KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
diff --git a/meta/conf/machine/qemumips64.conf b/meta/conf/machine/qemumips64.conf
index b37d78989b..32351f993e 100644
--- a/meta/conf/machine/qemumips64.conf
+++ b/meta/conf/machine/qemumips64.conf
@@ -3,8 +3,8 @@
#@DESCRIPTION: Machine configuration for running a MIPS64 system on QEMU
require conf/machine/include/qemu.inc
-require conf/machine/include/tune-mips64r2.inc
-require conf/machine/include/qemuboot-mips.inc
+require conf/machine/include/mips/tune-mips64r2.inc
+require conf/machine/include/mips/qemuboot-mips.inc
QB_CPU = "-cpu MIPS64R2-generic"
diff --git a/meta/conf/machine/qemuppc.conf b/meta/conf/machine/qemuppc.conf
index a84594f335..bab06e292e 100644
--- a/meta/conf/machine/qemuppc.conf
+++ b/meta/conf/machine/qemuppc.conf
@@ -3,7 +3,7 @@
#@DESCRIPTION: Machine configuration for running a PPC system on QEMU
require conf/machine/include/qemu.inc
-require conf/machine/include/tune-ppc7400.inc
+require conf/machine/include/powerpc/tune-ppc7400.inc
TARGET_CC_KERNEL_ARCH = "-mno-spe"
diff --git a/meta/conf/machine/qemuppc64.conf b/meta/conf/machine/qemuppc64.conf
index 0682e752be..2fbd26a6f9 100644
--- a/meta/conf/machine/qemuppc64.conf
+++ b/meta/conf/machine/qemuppc64.conf
@@ -3,7 +3,7 @@
#@DESCRIPTION: Machine configuration for running a PPC system on QEMU
require conf/machine/include/qemu.inc
-require conf/machine/include/tune-power9.inc
+require conf/machine/include/powerpc/tune-power9.inc
KERNEL_IMAGETYPE = "vmlinux"
@@ -13,12 +13,11 @@ SERIAL_CONSOLES ?= "115200;hvc0"
QB_SYSTEM_NAME = "qemu-system-ppc64"
QB_MACHINE = "-machine pseries"
QB_CPU = "-cpu POWER9"
-QB_KERNEL_CMDLINE_APPEND = "console=hvc0"
+QB_SMP ?= "-smp 2"
+
+QB_NFSROOTFS_EXTRA_OPT = "wsize=524288,rsize=524288"
+QB_KERNEL_CMDLINE_APPEND = "console=hvc0 nohugevmalloc"
#QB_OPT_APPEND += "-device qemu-xhci -device usb-tablet -device usb-kbd"
QB_OPT_APPEND = "-usb -device usb-tablet"
-#prelink broken on ppc64
-#USER_CLASSES_remove = "image-prelink"
-#IMAGE_PREPROCESS_COMMAND_remove = "prelink_image;"
-
MACHINE_EXTRA_RRECOMMENDS += " kernel-modules"
diff --git a/meta/conf/machine/qemux86-64.conf b/meta/conf/machine/qemux86-64.conf
index db9004ee32..14873a3b4f 100644
--- a/meta/conf/machine/qemux86-64.conf
+++ b/meta/conf/machine/qemux86-64.conf
@@ -6,11 +6,12 @@ PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
PREFERRED_PROVIDER_virtual/libgles1 ?= "mesa"
PREFERRED_PROVIDER_virtual/libgles2 ?= "mesa"
+PREFERRED_PROVIDER_virtual/libgles3 ?= "mesa"
require conf/machine/include/qemu.inc
DEFAULTTUNE ?= "core2-64"
-require conf/machine/include/tune-core2.inc
-require conf/machine/include/qemuboot-x86.inc
+require conf/machine/include/x86/tune-x86-64-v3.inc
+require conf/machine/include/x86/qemuboot-x86.inc
UBOOT_MACHINE ?= "qemu-x86_64_defconfig"
diff --git a/meta/conf/machine/qemux86.conf b/meta/conf/machine/qemux86.conf
index 7e6723b880..1e072e1ae2 100644
--- a/meta/conf/machine/qemux86.conf
+++ b/meta/conf/machine/qemux86.conf
@@ -6,11 +6,12 @@ PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
PREFERRED_PROVIDER_virtual/libgles1 ?= "mesa"
PREFERRED_PROVIDER_virtual/libgles2 ?= "mesa"
+PREFERRED_PROVIDER_virtual/libgles3 ?= "mesa"
require conf/machine/include/qemu.inc
DEFAULTTUNE ?= "core2-32"
-require conf/machine/include/tune-corei7.inc
-require conf/machine/include/qemuboot-x86.inc
+require conf/machine/include/x86/tune-corei7.inc
+require conf/machine/include/x86/qemuboot-x86.inc
UBOOT_MACHINE ?= "qemu-x86_defconfig"