summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Mason <jdmason@kudzu.us>2021-08-18 22:52:20 -0400
committerRichard Purdie <richard.purdie@linuxfoundation.org>2021-08-20 08:53:03 +0100
commitff0ea5633a8f1d9e5d709cae9b16482c6be4adcf (patch)
tree822c29ffc23f869a738f0f9ea1c1fcf2433d76e8
parenta3c1be72af66ba8dd1b1393f10dd1c13c7cb9509 (diff)
downloadpoky-ff0ea5633a8f1d9e5d709cae9b16482c6be4adcf.tar.gz
arch-arm*: add better support for gcc march extensions
GCC has the ability to pass extensions to the march parameter, which expand the funcationality of the march. For example "-march=armv7ve+simd" adds SIMD to ARMv7. Currently, there is no way to expand the march setting without modifying each instance, as you can't guarantee the ordering when using the existing TUNE_CCARGS. By introducing two new variables, TUNE_CCARGS_MARCH and TUNE_CCARGS_MARCH_OPT, we can enforce that these two go together. Also, expand existing and create new feature files that use these variables to expand the functionality. (From OE-Core rev: 794eb617bfd1997e7a3498812c63a20c58a10554) Signed-off-by: Jon Mason <jdmason@kudzu.us> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/conf/machine/include/arm/arch-arm.inc4
-rw-r--r--meta/conf/machine/include/arm/arch-armv4.inc2
-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.inc2
-rw-r--r--meta/conf/machine/include/arm/arch-armv7em.inc2
-rw-r--r--meta/conf/machine/include/arm/arch-armv7m.inc2
-rw-r--r--meta/conf/machine/include/arm/arch-armv7ve.inc2
-rw-r--r--meta/conf/machine/include/arm/arch-armv8-1m-main.inc2
-rw-r--r--meta/conf/machine/include/arm/arch-armv8-2a.inc2
-rw-r--r--meta/conf/machine/include/arm/arch-armv8a.inc8
-rw-r--r--meta/conf/machine/include/arm/arch-armv8m-base.inc2
-rw-r--r--meta/conf/machine/include/arm/arch-armv8m-main.inc14
-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.inc2
-rw-r--r--meta/conf/machine/include/arm/feature-arm-neon.inc5
18 files changed, 37 insertions, 27 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}
14ABIEXTENSION = "eabi" 14ABIEXTENSION = "eabi"
15 15
16TARGET_FPU = "${@d.getVar('TUNE_CCARGS_MFLOAT') or 'soft'}" 16TARGET_FPU = "${@d.getVar('TUNE_CCARGS_MFLOAT') or 'soft'}"
17
18# 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.
19TUNE_CCARGS_MARCH_OPTS ??= ""
20TUNE_CCARGS .= "${TUNE_CCARGS_MARCH}${TUNE_CCARGS_MARCH_OPTS}"
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"
2 2
3TUNEVALID[arm] = "Enable ARM instruction set" 3TUNEVALID[arm] = "Enable ARM instruction set"
4TUNEVALID[armv4] = "Enable instructions for ARMv4" 4TUNEVALID[armv4] = "Enable instructions for ARMv4"
5TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv4', ' -march=armv4${ARMPKGSFX_THUMB}', '', d)}" 5TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv4', ' -march=armv4${ARMPKGSFX_THUMB}', '', d)}"
6# enable --fix-v4bx when we have armv4 in TUNE_FEATURES, but then disable it when we have also armv5 or thumb 6# enable --fix-v4bx when we have armv4 in TUNE_FEATURES, but then disable it when we have also armv5 or thumb
7# maybe we should extend bb.utils.contains to support check for any checkvalues in value, now it does 7# maybe we should extend bb.utils.contains to support check for any checkvalues in value, now it does
8# checkvalues.issubset(val) which cannot be used for negative test of foo neither bar in value 8# 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.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"
2 2
3TUNEVALID[armv5] = "Enable instructions for ARMv5" 3TUNEVALID[armv5] = "Enable instructions for ARMv5"
4TUNECONFLICTS[armv5] = "armv4" 4TUNECONFLICTS[armv5] = "armv4"
5TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv5', ' -march=armv5t${ARMPKGSFX_DSP}', '', d)}" 5TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv5', ' -march=armv5t${ARMPKGSFX_DSP}', '', d)}"
6MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv5', 'armv5:', '', d)}" 6MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv5', 'armv5:', '', d)}"
7 7
8require conf/machine/include/arm/arch-armv4.inc 8require 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"
2 2
3TUNEVALID[armv6] = "Enable instructions for ARMv6" 3TUNEVALID[armv6] = "Enable instructions for ARMv6"
4TUNECONFLICTS[armv6] = "armv4 armv5" 4TUNECONFLICTS[armv6] = "armv4 armv5"
5TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv6', ' -march=armv6', '', d)}" 5TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv6', ' -march=armv6', '', d)}"
6MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv6', 'armv6:', '', d)}" 6MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv6', 'armv6:', '', d)}"
7 7
8require conf/machine/include/arm/arch-armv5-dsp.inc 8require 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"
7 7
8# Use armv6s-m instead of armv6-m to avoid gcc bug "SVC is not permitted on this architecture". 8# Use armv6s-m instead of armv6-m to avoid gcc bug "SVC is not permitted on this architecture".
9# SVC is a valid instruction. 9# SVC is a valid instruction.
10TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv6m', ' -march=armv6s-m', '', d)}" 10TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv6m', ' -march=armv6s-m', '', d)}"
11MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv6m', 'armv6m:', '', d)}" 11MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv6m', 'armv6m:', '', d)}"
12 12
13require conf/machine/include/arm/arch-armv5.inc 13require 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..0a805b3be2 100644
--- a/meta/conf/machine/include/arm/arch-armv7a.inc
+++ b/meta/conf/machine/include/arm/arch-armv7a.inc
@@ -3,7 +3,7 @@ ARM_INSTRUCTION_SET ?= "thumb"
3 3
4TUNEVALID[armv7a] = "Enable instructions for ARMv7-a" 4TUNEVALID[armv7a] = "Enable instructions for ARMv7-a"
5TUNECONFLICTS[armv7a] = "armv4 armv5 armv6 armv7" 5TUNECONFLICTS[armv7a] = "armv4 armv5 armv6 armv7"
6TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7a', ' -march=armv7-a', '', d)}" 6TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7a', ' -march=armv7-a', '', d)}"
7MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv7a', 'armv7a:', '', d)}" 7MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv7a', 'armv7a:', '', d)}"
8 8
9require conf/machine/include/arm/arch-armv6.inc 9require conf/machine/include/arm/arch-armv6.inc
diff --git a/meta/conf/machine/include/arm/arch-armv7em.inc b/meta/conf/machine/include/arm/arch-armv7em.inc
index adcab272ed..f7608ea2ee 100644
--- a/meta/conf/machine/include/arm/arch-armv7em.inc
+++ b/meta/conf/machine/include/arm/arch-armv7em.inc
@@ -4,7 +4,7 @@
4DEFAULTTUNE ?= "armv7em" 4DEFAULTTUNE ?= "armv7em"
5 5
6TUNEVALID[armv7em] = "Enable instructions for ARMv7e-m" 6TUNEVALID[armv7em] = "Enable instructions for ARMv7e-m"
7TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7em', ' -march=armv7e-m', '', d)}" 7TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7em', ' -march=armv7e-m', '', d)}"
8MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv7em', 'armv7em:', '', d)}" 8MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv7em', 'armv7em:', '', d)}"
9 9
10TUNECONFLICTS[armv7em] = "armv4 armv5 armv6 armv7a" 10TUNECONFLICTS[armv7em] = "armv4 armv5 armv6 armv7a"
diff --git a/meta/conf/machine/include/arm/arch-armv7m.inc b/meta/conf/machine/include/arm/arch-armv7m.inc
index a36c265bc1..2b69a3dfd1 100644
--- a/meta/conf/machine/include/arm/arch-armv7m.inc
+++ b/meta/conf/machine/include/arm/arch-armv7m.inc
@@ -4,7 +4,7 @@
4DEFAULTTUNE ?= "armv7m" 4DEFAULTTUNE ?= "armv7m"
5 5
6TUNEVALID[armv7m] = "Enable instructions for ARMv7-m" 6TUNEVALID[armv7m] = "Enable instructions for ARMv7-m"
7TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7m', ' -march=armv7-m', '', d)}" 7TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7m', ' -march=armv7-m', '', d)}"
8MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv7m', 'armv7m:', '', d)}" 8MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv7m', 'armv7m:', '', d)}"
9 9
10TUNECONFLICTS[armv7m] = "armv4 armv5 armv6 armv7a" 10TUNECONFLICTS[armv7m] = "armv4 armv5 armv6 armv7a"
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"
2 2
3TUNEVALID[armv7ve] = "Enable instructions for ARMv7ve" 3TUNEVALID[armv7ve] = "Enable instructions for ARMv7ve"
4TUNECONFLICTS[armv7ve] = "armv4 armv5 armv6 armv7 armv7a" 4TUNECONFLICTS[armv7ve] = "armv4 armv5 armv6 armv7 armv7a"
5TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7ve', ' -march=armv7ve', '', d)}" 5TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7ve', ' -march=armv7ve', '', d)}"
6MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv7ve', 'armv7ve:', '', d)}" 6MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv7ve', 'armv7ve:', '', d)}"
7 7
8require conf/machine/include/arm/arch-armv7a.inc 8require conf/machine/include/arm/arch-armv7a.inc
diff --git a/meta/conf/machine/include/arm/arch-armv8-1m-main.inc b/meta/conf/machine/include/arm/arch-armv8-1m-main.inc
index 9171b31c90..5b1bcb8f46 100644
--- a/meta/conf/machine/include/arm/arch-armv8-1m-main.inc
+++ b/meta/conf/machine/include/arm/arch-armv8-1m-main.inc
@@ -5,7 +5,7 @@
5DEFAULTTUNE ?= "armv8-1m-main" 5DEFAULTTUNE ?= "armv8-1m-main"
6 6
7TUNEVALID[armv8-1m-main] = "Enable instructions for ARMv8.1-m.main" 7TUNEVALID[armv8-1m-main] = "Enable instructions for ARMv8.1-m.main"
8TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-1m-main', ' -march=armv8.1-m.main', '', d)}" 8TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-1m-main', ' -march=armv8.1-m.main', '', d)}"
9MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-1m-main', 'armv8-1m-main:', '', d)}" 9MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-1m-main', 'armv8-1m-main:', '', d)}"
10 10
11TUNECONFLICTS[armv8-1m-main] = "armv4 armv5 armv6 armv7a" 11TUNECONFLICTS[armv8-1m-main] = "armv4 armv5 armv6 armv7a"
diff --git a/meta/conf/machine/include/arm/arch-armv8-2a.inc b/meta/conf/machine/include/arm/arch-armv8-2a.inc
index c84b1ecf24..30f2870811 100644
--- a/meta/conf/machine/include/arm/arch-armv8-2a.inc
+++ b/meta/conf/machine/include/arm/arch-armv8-2a.inc
@@ -1,7 +1,7 @@
1DEFAULTTUNE ?= "armv8-2a" 1DEFAULTTUNE ?= "armv8-2a"
2 2
3TUNEVALID[armv8-2a] = "Enable instructions for ARMv8-a" 3TUNEVALID[armv8-2a] = "Enable instructions for ARMv8-a"
4TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-2a', ' -march=armv8.2-a', '', d)}" 4TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-2a', ' -march=armv8.2-a', '', d)}"
5# TUNE crypto will be handled by arch-armv8a.inc below 5# TUNE crypto will be handled by arch-armv8a.inc below
6MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-2a', 'armv8-2a:', '', d)}" 6MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-2a', 'armv8-2a:', '', d)}"
7 7
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 @@
1DEFAULTTUNE ?= "armv8a-crc" 1DEFAULTTUNE ?= "armv8a-crc"
2 2
3TUNEVALID[armv8a] = "Enable instructions for ARMv8-a" 3TUNEVALID[armv8a] = "Enable instructions for ARMv8-a"
4TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8a', ' -march=armv8-a', '', d)}" 4TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8a', ' -march=armv8-a', '', d)}"
5TUNEVALID[crc] = "Enable instructions for ARMv8-a Cyclic Redundancy Check (CRC)"
6TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'crc', '+crc', '', d)}"
7TUNEVALID[crypto] = "Enable instructions for ARMv8-a cryptographic"
8TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'crypto', '+crypto', '', d)}"
9MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8a', 'armv8a:', '', d)}" 5MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8a', 'armv8a:', '', d)}"
10 6
11require conf/machine/include/arm/arch-arm64.inc 7require conf/machine/include/arm/arch-arm64.inc
8require conf/machine/include/arm/feature-arm-crc.inc
9require conf/machine/include/arm/feature-arm-crypto.inc
12 10
13# Little Endian base configs 11# Little Endian base configs
14AVAILTUNES += "armv8a armv8a-crc armv8a-crc-crypto armv8a-crypto" 12AVAILTUNES += "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
index d9a341c66e..ffee8cea80 100644
--- a/meta/conf/machine/include/arm/arch-armv8m-base.inc
+++ b/meta/conf/machine/include/arm/arch-armv8m-base.inc
@@ -4,7 +4,7 @@
4DEFAULTTUNE ?= "armv8m-base" 4DEFAULTTUNE ?= "armv8m-base"
5 5
6TUNEVALID[armv8m-base] = "Enable instructions for ARMv8-m.base" 6TUNEVALID[armv8m-base] = "Enable instructions for ARMv8-m.base"
7TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8m-base', ' -march=armv8-m.base', '', d)}" 7TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8m-base', ' -march=armv8-m.base', '', d)}"
8MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8m-base', 'armv8m-base:', '', d)}" 8MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8m-base', 'armv8m-base:', '', d)}"
9 9
10TUNECONFLICTS[armv8m-base] = "armv4 armv5 armv6 armv7a" 10TUNECONFLICTS[armv8m-base] = "armv4 armv5 armv6 armv7a"
diff --git a/meta/conf/machine/include/arm/arch-armv8m-main.inc b/meta/conf/machine/include/arm/arch-armv8m-main.inc
index 4dbe401c19..01bef35428 100644
--- a/meta/conf/machine/include/arm/arch-armv8m-main.inc
+++ b/meta/conf/machine/include/arm/arch-armv8m-main.inc
@@ -4,23 +4,15 @@
4DEFAULTTUNE ?= "armv8m-main" 4DEFAULTTUNE ?= "armv8m-main"
5 5
6require conf/machine/include/arm/arch-armv8m-base.inc 6require conf/machine/include/arm/arch-armv8m-base.inc
7require conf/machine/include/arm/feature-arm-dsp.inc
8require conf/machine/include/arm/feature-arm-neon.inc
7 9
8TUNEVALID[armv8m-main] = "Enable instructions for ARMv8-m.main" 10TUNEVALID[armv8m-main] = "Enable instructions for ARMv8-m.main"
9TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8m-main', ' -march=armv8-m.main${MARCH_DSP}${MARCH_FPU}', '', d)}" 11TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8m-main', ' -march=armv8-m.main', '', d)}"
10MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8m-main', 'armv8m-main:', '', d)}" 12MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8m-main', 'armv8m-main:', '', d)}"
11 13
12TUNECONFLICTS[armv8m-main] = "armv4 armv5 armv6 armv7a" 14TUNECONFLICTS[armv8m-main] = "armv4 armv5 armv6 armv7a"
13 15
14# FIXME - below taken from meta/conf/machine/include/arm/arch-armv5-dsp.inc and should be put into something more generic
15TUNEVALID[dsp] = "ARM DSP functionality"
16ARMPKGSFX_DSP = "${@bb.utils.contains('TUNE_FEATURES', [ 'dsp' ], 'e', '', d)}"
17MARCH_DSP = "${@bb.utils.contains('TUNE_FEATURES', [ 'dsp' ], '+dsp', '+nodsp', d)}"
18
19# FIXME - Below belongs in meta/conf/machine/include/arm/feature-arm-neon.inc
20TUNEVALID[vfpv5spd16] = "Enable Vector Floating Point Version 5, Single Precision. with 16 registers (fpv5-sp-d16) unit."
21TUNE_CCARGS_MFPU .= "${@bb.utils.contains('TUNE_FEATURES', 'vfpv5spd16', 'fpv5-sp-d16', '', d)}"
22MARCH_FPU = "${@bb.utils.contains('TUNE_FEATURES', [ 'vfpv5spd16' ], '+fp', '+nofp', d)}"
23
24AVAILTUNES += "armv8m-main armv8m-maine armv8m-main-vfpv5spd16 armv8m-maine-vfpv5spd16" 16AVAILTUNES += "armv8m-main armv8m-maine armv8m-main-vfpv5spd16 armv8m-maine-vfpv5spd16"
25ARMPKGARCH:tune-armv8m-main = "armv8m-main" 17ARMPKGARCH:tune-armv8m-main = "armv8m-main"
26ARMPKGARCH:tune-armv8m-maine = "armv8m-main" 18ARMPKGARCH:tune-armv8m-maine = "armv8m-main"
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 @@
1# Cyclic Redundancy Check (CRC) instructions for armv8-a and armv8-r
2
3TUNEVALID[crc] = "Enable instructions for ARMv8 Cyclic Redundancy Check (CRC)"
4TUNE_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 @@
1# Cryptographic instructions for:
2# armv8-a, armv8.1-a, armv8.3-a, armv8.4-a, armv8.5-a, armv8.6-a, and armv8-r
3
4TUNEVALID[crypto] = "Enable cryptographic instructions for ARMv8"
5TUNE_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..ec5007a8ca
--- /dev/null
+++ b/meta/conf/machine/include/arm/feature-arm-dsp.inc
@@ -0,0 +1,2 @@
1# Note: TUNEVALID set in conf/machine/include/arm/arch-armv5-dsp.inc
2TUNE_CCARGS_MARCH_OPTS .= "${@bb.utils.contains('TUNE_FEATURES', [ 'dsp' ], '+dsp', '', 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' ],
19 19
20TUNEVALID[vfpv4d16] = "Enable Vector Floating Point Version 4 with 16 registers (vfpv4-d16) unit." 20TUNEVALID[vfpv4d16] = "Enable Vector Floating Point Version 4 with 16 registers (vfpv4-d16) unit."
21TUNE_CCARGS_MFPU .= "${@bb.utils.contains('TUNE_FEATURES', 'vfpv4d16', ' vfpv4-d16', '', d)}" 21TUNE_CCARGS_MFPU .= "${@bb.utils.contains('TUNE_FEATURES', 'vfpv4d16', ' vfpv4-d16', '', d)}"
22
23TUNEVALID[vfpv5spd16] = "Enable Vector Floating Point Version 5, Single Precision. with 16 registers (fpv5-sp-d16) unit."
24TUNE_CCARGS_MFPU .= "${@bb.utils.contains('TUNE_FEATURES', 'vfpv5spd16', 'fpv5-sp-d16', '', d)}"
25
26TUNE_CCARGS_MARCH_OPTS .= "${@bb.utils.contains('TUNE_FEATURES', [ 'vfpv3d16', 'vfpv5spd16' ], '+fp', '', d)}"