summaryrefslogtreecommitdiffstats
path: root/meta/conf/machine/include/arm
diff options
context:
space:
mode:
Diffstat (limited to 'meta/conf/machine/include/arm')
-rw-r--r--meta/conf/machine/include/arm/README40
-rw-r--r--meta/conf/machine/include/arm/arch-arm.inc17
-rw-r--r--meta/conf/machine/include/arm/arch-armv4.inc33
-rw-r--r--meta/conf/machine/include/arm/arch-armv5-dsp.inc52
-rw-r--r--meta/conf/machine/include/arm/arch-armv5.inc60
-rw-r--r--meta/conf/machine/include/arm/arch-armv6.inc50
-rw-r--r--meta/conf/machine/include/arm/arch-armv7a.inc75
-rw-r--r--meta/conf/machine/include/arm/feature-arm-neon.inc3
-rw-r--r--meta/conf/machine/include/arm/feature-arm-thumb.inc25
-rw-r--r--meta/conf/machine/include/arm/feature-arm-vfp.inc9
10 files changed, 364 insertions, 0 deletions
diff --git a/meta/conf/machine/include/arm/README b/meta/conf/machine/include/arm/README
new file mode 100644
index 0000000000..a1beb75fdf
--- /dev/null
+++ b/meta/conf/machine/include/arm/README
@@ -0,0 +1,40 @@
12012/03/30 - Mark Hatle <mark.hatle@windriver.com>
2 - Initial Revision
3
4The ARM architecture definitions are split among a number of files.
5The primary definitions for the variables are handled by the core
6arch-arm.inc file.
7
8TUNE_ARCH is set to either "arm" or "armeb" depending on the value
9of the existence of the "bigendian" feature in a given tune.
10
11A small set of ARM specific variables have been defined to allow
12TUNE_PKGARCH to be automatically defined. Optimized tunings must NOT
13change the definiton of TUNE_PKGARCH. TUNE_PKGACH_tune-<tune> will be
14ignored. The format of the package arch is enforced by the TUNE_PKGARCH
15default. The format must be of the form:
16<armversion>[t][e][hf][b][-vfp][-neon]
17
18TUNE_PKGARCH is defined as:
19${ARMPKGARCH}${ARMPKGSFX_THUMB}${ARMPKGSFX_DSP}${ARMPKGSFX_EABI}${ARMPKGSFX_ENDIAN}${ARMPKGSFX_FPU}
20
21ARMPKGARCH - This is the core package arch component specified by each
22tuning. This is the primary identifier of a tuning. Usual values are:
23arm, armv4, armv5, armv6, armv7a, etc.
24
25ARMPKGSFX_THUMB - This is the thumb specific suffix. Curently it is
26defined in feature-arm-thumb.inc.
27
28ARMPKGSFX_DSP - This is the DSP specific suffix. Currently this is set
29to 'e' when on armv5 and the dsp feature is enabled.
30
31ARMPKGSFX_EABI - This is the eabi specific suffix. There are currently
32two defined ABIs specificed, standard EABI and Hard Float (VFP) EABI.
33When the callconvention-hard is enabled, "hf" is specified, otherwise it
34is blank.
35
36ARMPKGSFX_ENDIAN - This is the endian specific suffix. It is defined in
37the core arch-arm.inc file.
38
39ARMPKGSFX_FPU - This is the FPU specific suffix. The suffix indicates
40specific FPU optimizations. 'vfp' and 'neon' are both defined.
diff --git a/meta/conf/machine/include/arm/arch-arm.inc b/meta/conf/machine/include/arm/arch-arm.inc
new file mode 100644
index 0000000000..90b80c4c36
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-arm.inc
@@ -0,0 +1,17 @@
1
2TUNEVALID[bigendian] = "Enable big-endian mode."
3
4ARMPKGARCH = "${ARMPKGARCH_tune-${DEFAULTTUNE}}"
5ARMPKGSFX_ENDIAN = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", "b", "", d)}"
6ARMPKGSFX_FPU ??= ""
7ARMPKGSFX_DSP ??= ""
8ARMPKGSFX_EABI ??= ""
9ARMPKGSFX_THUMB ??= ""
10
11TUNE_ARCH = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", "armeb", "arm", d)}"
12TUNE_PKGARCH = "${ARMPKGARCH}${ARMPKGSFX_THUMB}${ARMPKGSFX_DSP}${ARMPKGSFX_EABI}${ARMPKGSFX_ENDIAN}${ARMPKGSFX_FPU}"
13
14ABIEXTENSION = "eabi"
15
16TARGET_FPU = "${@d.getVar('ARMPKGSFX_FPU', True).strip('-') or 'soft'}"
17
diff --git a/meta/conf/machine/include/arm/arch-armv4.inc b/meta/conf/machine/include/arm/arch-armv4.inc
new file mode 100644
index 0000000000..c33c81690c
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv4.inc
@@ -0,0 +1,33 @@
1DEFAULTTUNE ?= "armv4"
2
3TUNEVALID[armv4] = "Enable instructions for ARMv4"
4TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "armv4", " -march=armv4${ARMPKGSFX_THUMB}", "", d)}"
5# enable --fix-v4bx when we have armv4 in TUNE_FEATURES, but then disable it when we have also armv5 or thumb
6# maybe we should extend bb.utils.contains to support check for any checkvalues in value, now it does
7# checkvalues.issubset(val) which cannot be used for negative test of foo neither bar in value
8FIX_V4BX_ARMV4 = "${@bb.utils.contains("TUNE_FEATURES", "armv4", "--fix-v4bx", "", d)}"
9FIX_V4BX_ARMV5 = "${@bb.utils.contains("TUNE_FEATURES", "armv5", "", "${FIX_V4BX_ARMV4}", d)}"
10FIX_V4BX = "${@bb.utils.contains("TUNE_FEATURES", "thumb", "", "${FIX_V4BX_ARMV5}", d)}"
11TARGET_LD_KERNEL_ARCH += "${FIX_V4BX}"
12MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "armv4", "armv4:", "" ,d)}"
13
14require conf/machine/include/arm/arch-arm.inc
15require conf/machine/include/arm/feature-arm-thumb.inc
16
17# Little Endian
18AVAILTUNES += "armv4 armv4t"
19ARMPKGARCH_tune-armv4 ?= "armv4"
20ARMPKGARCH_tune-armv4t ?= "armv4"
21TUNE_FEATURES_tune-armv4 ?= "armv4"
22TUNE_FEATURES_tune-armv4t ?= "${TUNE_FEATURES_tune-armv4} thumb"
23PACKAGE_EXTRA_ARCHS_tune-armv4 = "arm armv4"
24PACKAGE_EXTRA_ARCHS_tune-armv4t = "${PACKAGE_EXTRA_ARCHS_tune-armv4} armv4t"
25
26# Big Endian
27AVAILTUNES += "armv4b armv4tb"
28ARMPKGARCH_tune-armv4b ?= "armv4"
29ARMPKGARCH_tune-armv4tb ?= "armv4"
30TUNE_FEATURES_tune-armv4b ?= "${TUNE_FEATURES_tune-armv4} bigendian"
31TUNE_FEATURES_tune-armv4tb ?= "${TUNE_FEATURES_tune-armv4t} bigendian"
32PACKAGE_EXTRA_ARCHS_tune-armv4b = "armeb armv4b"
33PACKAGE_EXTRA_ARCHS_tune-armv4tb = "${PACKAGE_EXTRA_ARCHS_tune-armv4b} armv4tb"
diff --git a/meta/conf/machine/include/arm/arch-armv5-dsp.inc b/meta/conf/machine/include/arm/arch-armv5-dsp.inc
new file mode 100644
index 0000000000..524a62aec9
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv5-dsp.inc
@@ -0,0 +1,52 @@
1ARMPKGSFX_DSP = "${@bb.utils.contains("TUNE_FEATURES", [ "armv5", "dsp" ], "e", "", d)}"
2TUNEVALID[dsp] = "ARM DSP functionality"
3
4require conf/machine/include/arm/arch-armv5.inc
5
6# Little Endian
7AVAILTUNES += "armv5e armv5te"
8ARMPKGARCH_tune-armv5e ?= "armv5"
9ARMPKGARCH_tune-armv5te ?= "armv5"
10TUNE_FEATURES_tune-armv5e ?= "${TUNE_FEATURES_tune-armv5} dsp"
11TUNE_FEATURES_tune-armv5te ?= "${TUNE_FEATURES_tune-armv5t} dsp"
12PACKAGE_EXTRA_ARCHS_tune-armv5e = "${PACKAGE_EXTRA_ARCHS_tune-armv5} armv5e"
13PACKAGE_EXTRA_ARCHS_tune-armv5te = "${PACKAGE_EXTRA_ARCHS_tune-armv5t} armv5e armv5te"
14
15# Little Endian + VFP/DSP
16AVAILTUNES += "armv5e-vfp armv5te-vfp armv5ehf-vfp armv5tehf-vfp"
17ARMPKGARCH_tune-armv5e-vfp ?= "armv5"
18ARMPKGARCH_tune-armv5te-vfp ?= "armv5"
19ARMPKGARCH_tune-armv5ehf-vfp ?= "armv5"
20ARMPKGARCH_tune-armv5tehf-vfp ?= "armv5"
21TUNE_FEATURES_tune-armv5e-vfp ?= "${TUNE_FEATURES_tune-armv5e} vfp"
22TUNE_FEATURES_tune-armv5te-vfp ?= "${TUNE_FEATURES_tune-armv5te} vfp"
23TUNE_FEATURES_tune-armv5ehf-vfp ?= "${TUNE_FEATURES_tune-armv5e-vfp} callconvention-hard"
24TUNE_FEATURES_tune-armv5tehf-vfp ?= "${TUNE_FEATURES_tune-armv5te-vfp} callconvention-hard"
25PACKAGE_EXTRA_ARCHS_tune-armv5e-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5-vfp} armv5e armv5e-vfp"
26PACKAGE_EXTRA_ARCHS_tune-armv5te-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5t-vfp} armv5e armv5te armv5e-vfp armv5te-vfp"
27PACKAGE_EXTRA_ARCHS_tune-armv5ehf-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5hf-vfp} armv5ehf-vfp"
28PACKAGE_EXTRA_ARCHS_tune-armv5tehf-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5thf-vfp} armv5ehf-vfp armv5tehf-vfp"
29
30# Big Endian
31AVAILTUNES += "armv5eb armv5teb"
32ARMPKGARCH_tune-armv5eb ?= "armv5"
33ARMPKGARCH_tune-armv5teb ?= "armv5"
34TUNE_FEATURES_tune-armv5eb ?= "${TUNE_FEATURES_tune-armv5e} bigendian"
35TUNE_FEATURES_tune-armv5teb ?= "${TUNE_FEATURES_tune-armv5te} bigendian"
36PACKAGE_EXTRA_ARCHS_tune-armv5eb = "${PACKAGE_EXTRA_ARCHS_tune-armv5b} armv5eb"
37PACKAGE_EXTRA_ARCHS_tune-armv5teb = "${PACKAGE_EXTRA_ARCHS_tune-armv5tb} armv5eb armv5teb"
38
39# Big Endian + VFP/DSP
40AVAILTUNES += "armv5eb-vfp armv5teb-vfp armv5ehfb-vfp armv5tehfb-vfp"
41ARMPKGARCH_tune-armv5eb-vfp ?= "armv5"
42ARMPKGARCH_tune-armv5teb-vfp ?= "armv5"
43ARMPKGARCH_tune-armv5ehfb-vfp ?= "armv5"
44ARMPKGARCH_tune-armv5tehfb-vfp ?= "armv5"
45TUNE_FEATURES_tune-armv5eb-vfp ?= "${TUNE_FEATURES_tune-armv5e-vfp} bigendian"
46TUNE_FEATURES_tune-armv5teb-vfp ?= "${TUNE_FEATURES_tune-armv5te-vfp} bigendian"
47TUNE_FEATURES_tune-armv5ehfb-vfp ?= "${TUNE_FEATURES_tune-armv5ehf-vfp} bigendian"
48TUNE_FEATURES_tune-armv5tehfb-vfp ?= "${TUNE_FEATURES_tune-armv5tehf-vfp} bigendian"
49PACKAGE_EXTRA_ARCHS_tune-armv5eb-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5b-vfp} armv5eb armv5eb-vfp"
50PACKAGE_EXTRA_ARCHS_tune-armv5teb-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5tb-vfp} armv5eb armv5teb armv5eb-vfp armv5teb-vfp"
51PACKAGE_EXTRA_ARCHS_tune-armv5ehfb-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5hfb-vfp} armv5ehfb-vfp"
52PACKAGE_EXTRA_ARCHS_tune-armv5tehfb-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5thfb-vfp} armv5ehfb-vfp armv5tehfb-vfp"
diff --git a/meta/conf/machine/include/arm/arch-armv5.inc b/meta/conf/machine/include/arm/arch-armv5.inc
new file mode 100644
index 0000000000..9e8d1fa0a5
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv5.inc
@@ -0,0 +1,60 @@
1DEFAULTTUNE ?= "armv5"
2
3TUNEVALID[armv5] = "Enable instructions for ARMv5"
4TUNECONFLICTS[armv5] = "armv4"
5TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "armv5", " -march=armv5${ARMPKGSFX_THUMB}${ARMPKGSFX_DSP}", "", d)}"
6MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "armv5", "armv5:", "" ,d)}"
7
8ARMPKGSFX_DSP = "${@bb.utils.contains("TUNE_FEATURES", [ "armv5", "dsp" ], "e", "", d)}"
9
10require conf/machine/include/arm/arch-armv4.inc
11require conf/machine/include/arm/feature-arm-vfp.inc
12
13# Little Endian
14AVAILTUNES += "armv5 armv5t"
15ARMPKGARCH_tune-armv5 ?= "armv5"
16ARMPKGARCH_tune-armv5t ?= "armv5"
17TUNE_FEATURES_tune-armv5 ?= "armv5"
18TUNE_FEATURES_tune-armv5t ?= "${TUNE_FEATURES_tune-armv5} thumb"
19PACKAGE_EXTRA_ARCHS_tune-armv5 = "${PACKAGE_EXTRA_ARCHS_tune-armv4} armv5"
20PACKAGE_EXTRA_ARCHS_tune-armv5t = "${PACKAGE_EXTRA_ARCHS_tune-armv4t} armv5 armv5t"
21
22# Little Endian + VFP/DSP
23AVAILTUNES += "armv5-vfp armv5t-vfp armv5hf-vfp armv5thf-vfp"
24ARMPKGARCH_tune-armv5-vfp ?= "armv5"
25ARMPKGARCH_tune-armv5t-vfp ?= "armv5"
26ARMPKGARCH_tune-armv5hf-vfp ?= "armv5"
27ARMPKGARCH_tune-armv5thf-vfp ?= "armv5"
28TUNE_FEATURES_tune-armv5-vfp ?= "${TUNE_FEATURES_tune-armv5} vfp"
29TUNE_FEATURES_tune-armv5t-vfp ?= "${TUNE_FEATURES_tune-armv5t} vfp"
30TUNE_FEATURES_tune-armv5hf-vfp ?= "${TUNE_FEATURES_tune-armv5-vfp} callconvention-hard"
31TUNE_FEATURES_tune-armv5thf-vfp ?= "${TUNE_FEATURES_tune-armv5t-vfp} callconvention-hard"
32PACKAGE_EXTRA_ARCHS_tune-armv5-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5} armv5-vfp"
33PACKAGE_EXTRA_ARCHS_tune-armv5t-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5t} armv5-vfp armv5t-vfp"
34PACKAGE_EXTRA_ARCHS_tune-armv5hf-vfp = "armv5hf-vfp"
35PACKAGE_EXTRA_ARCHS_tune-armv5thf-vfp = "armv5hf-vfp armv5thf-vfp"
36PACKAGE_EXTRA_ARCHS_tune-armv5tehf-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5thf-vfp} armv5ehf-vfp armv5tehf-vfp"
37
38# Big Endian
39AVAILTUNES += "armv5b armv5tb"
40ARMPKGARCH_tune-armv5b ?= "armv5"
41ARMPKGARCH_tune-armv5tb ?= "armv5"
42TUNE_FEATURES_tune-armv5b ?= "${TUNE_FEATURES_tune-armv5} bigendian"
43TUNE_FEATURES_tune-armv5tb ?= "${TUNE_FEATURES_tune-armv5t} bigendian"
44PACKAGE_EXTRA_ARCHS_tune-armv5b = "${PACKAGE_EXTRA_ARCHS_tune-armv4b} armv5b"
45PACKAGE_EXTRA_ARCHS_tune-armv5tb = "${PACKAGE_EXTRA_ARCHS_tune-armv4tb} armv5b armv5tb"
46
47# Big Endian + VFP/DSP
48AVAILTUNES += "armv5b-vfp armv5tb-vfp armv5hfb-vfp armv5thfb-vfp"
49ARMPKGARCH_tune-armv5b-vfp ?= "armv5"
50ARMPKGARCH_tune-armv5tb-vfp ?= "armv5"
51ARMPKGARCH_tune-armv5hfb-vfp ?= "armv5"
52ARMPKGARCH_tune-armv5thfb-vfp ?= "armv5"
53TUNE_FEATURES_tune-armv5b-vfp ?= "${TUNE_FEATURES_tune-armv5-vfp} bigendian"
54TUNE_FEATURES_tune-armv5tb-vfp ?= "${TUNE_FEATURES_tune-armv5t-vfp} bigendian"
55TUNE_FEATURES_tune-armv5hfb-vfp ?= "${TUNE_FEATURES_tune-armv5hf-vfp} bigendian"
56TUNE_FEATURES_tune-armv5thfb-vfp ?= "${TUNE_FEATURES_tune-armv5thf-vfp} bigendian"
57PACKAGE_EXTRA_ARCHS_tune-armv5b-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5b} armv5b-vfp"
58PACKAGE_EXTRA_ARCHS_tune-armv5tb-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5tb} armv5b-vfp armv5tb-vfp"
59PACKAGE_EXTRA_ARCHS_tune-armv5hfb-vfp = "armv5hfb-vfp"
60PACKAGE_EXTRA_ARCHS_tune-armv5thfb-vfp = "armv5hfb-vfp armv5thfb-vfp"
diff --git a/meta/conf/machine/include/arm/arch-armv6.inc b/meta/conf/machine/include/arm/arch-armv6.inc
new file mode 100644
index 0000000000..0adf73fae2
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv6.inc
@@ -0,0 +1,50 @@
1DEFAULTTUNE ?= "armv6"
2
3TUNEVALID[armv6] = "Enable instructions for ARMv6"
4TUNECONFLICTS[armv6] = "armv4 armv5"
5TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "armv6", " -march=armv6", "", d)}"
6MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "armv6", "armv6:", "" ,d)}"
7
8require conf/machine/include/arm/arch-armv5-dsp.inc
9
10# Little Endian
11AVAILTUNES += "armv6-novfp armv6t-novfp armv6 armv6t armv6hf armv6thf"
12ARMPKGARCH_tune-armv6-novfp ?= "armv6"
13ARMPKGARCH_tune-armv6t-novfp ?= "armv6"
14ARMPKGARCH_tune-armv6 ?= "armv6"
15ARMPKGARCH_tune-armv6t ?= "armv6"
16ARMPKGARCH_tune-armv6hf ?= "armv6"
17ARMPKGARCH_tune-armv6thf ?= "armv6"
18TUNE_FEATURES_tune-armv6-novfp ?= "armv6"
19TUNE_FEATURES_tune-armv6t-novfp ?= "${TUNE_FEATURES_tune-armv6-novfp} thumb"
20TUNE_FEATURES_tune-armv6 ?= "${TUNE_FEATURES_tune-armv6-novfp} vfp"
21TUNE_FEATURES_tune-armv6t ?= "${TUNE_FEATURES_tune-armv6t-novfp} vfp"
22TUNE_FEATURES_tune-armv6hf ?= "${TUNE_FEATURES_tune-armv6} callconvention-hard"
23TUNE_FEATURES_tune-armv6thf ?= "${TUNE_FEATURES_tune-armv6t} callconvention-hard"
24PACKAGE_EXTRA_ARCHS_tune-armv6-novfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5e} armv6"
25PACKAGE_EXTRA_ARCHS_tune-armv6t-novfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5te} armv6 armv6t"
26PACKAGE_EXTRA_ARCHS_tune-armv6 = "${PACKAGE_EXTRA_ARCHS_tune-armv5e-vfp} armv6 armv6-vfp"
27PACKAGE_EXTRA_ARCHS_tune-armv6t = "${PACKAGE_EXTRA_ARCHS_tune-armv5te-vfp} armv6 armv6t armv6-vfp armv6t-vfp"
28PACKAGE_EXTRA_ARCHS_tune-armv6hf = "${PACKAGE_EXTRA_ARCHS_tune-armv5ehf-vfp} armv6hf-vfp"
29PACKAGE_EXTRA_ARCHS_tune-armv6thf = "${PACKAGE_EXTRA_ARCHS_tune-armv5tehf-vfp} armv6hf-vfp armv6thf-vfp"
30
31# Big Endian
32AVAILTUNES += "armv6b-novfp armv6tb-novfp armv6b armv6tb armv6hfb armv6thfb"
33ARMPKGARCH_tune-armv6b-novfp ?= "armv6"
34ARMPKGARCH_tune-armv6tb-novfp ?= "armv6"
35ARMPKGARCH_tune-armv6b ?= "armv6"
36ARMPKGARCH_tune-armv6tb ?= "armv6"
37ARMPKGARCH_tune-armv6hfb ?= "armv6"
38ARMPKGARCH_tune-armv6thfb ?= "armv6"
39TUNE_FEATURES_tune-armv6b-novfp ?= "${TUNE_FEATURES_tune-armv6-novfp} bigendian"
40TUNE_FEATURES_tune-armv6tb-novfp ?= "${TUNE_FEATURES_tune-armv6t-novfp} bigendian"
41TUNE_FEATURES_tune-armv6b ?= "${TUNE_FEATURES_tune-armv6} bigendian"
42TUNE_FEATURES_tune-armv6tb ?= "${TUNE_FEATURES_tune-armv6t} bigendian"
43TUNE_FEATURES_tune-armv6hfb ?= "${TUNE_FEATURES_tune-armv6hf} bigendian"
44TUNE_FEATURES_tune-armv6thfb ?= "${TUNE_FEATURES_tune-armv6thf} bigendian"
45PACKAGE_EXTRA_ARCHS_tune-armv6b-novfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5eb} armv6b"
46PACKAGE_EXTRA_ARCHS_tune-armv6tb-novfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5teb} armv6b armv6tb"
47PACKAGE_EXTRA_ARCHS_tune-armv6b = "${PACKAGE_EXTRA_ARCHS_tune-armv5eb-vfp} armv6b armv6b-vfp"
48PACKAGE_EXTRA_ARCHS_tune-armv6tb = "${PACKAGE_EXTRA_ARCHS_tune-armv5teb-vfp} armv6b armv6tb armv6b-vfp armv6tb-vfp"
49PACKAGE_EXTRA_ARCHS_tune-armv6hfb = "${PACKAGE_EXTRA_ARCHS_tune-armv5ehfb-vfp} armv6hfb-vfp"
50PACKAGE_EXTRA_ARCHS_tune-armv6thfb = "${PACKAGE_EXTRA_ARCHS_tune-armv5tehfb-vfp} armv6hfb-vfp armv6thfb-vfp"
diff --git a/meta/conf/machine/include/arm/arch-armv7a.inc b/meta/conf/machine/include/arm/arch-armv7a.inc
new file mode 100644
index 0000000000..bb36c39739
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv7a.inc
@@ -0,0 +1,75 @@
1DEFAULTTUNE ?= "armv7a"
2
3TUNEVALID[armv7a] = "Enable instructions for ARMv7-a"
4TUNECONFLICTS[armv7a] = "armv4 armv5 armv6 armv7"
5TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "armv7a", " -march=armv7-a", "", d)}"
6MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "armv7a", "armv7a:", "" ,d)}"
7
8require conf/machine/include/arm/arch-armv6.inc
9require conf/machine/include/arm/feature-arm-neon.inc
10
11# Little Endian base configs
12AVAILTUNES += "armv7a armv7at armv7a-neon armv7at-neon"
13ARMPKGARCH_tune-armv7a ?= "armv7a"
14ARMPKGARCH_tune-armv7at ?= "armv7a"
15ARMPKGARCH_tune-armv7a-neon?= "armv7a"
16ARMPKGARCH_tune-armv7at-neon ?= "armv7a"
17TUNE_FEATURES_tune-armv7a ?= "armv7a vfp"
18TUNE_FEATURES_tune-armv7at ?= "${TUNE_FEATURES_tune-armv7a} thumb"
19TUNE_FEATURES_tune-armv7a-neon ?= "${TUNE_FEATURES_tune-armv7a} neon"
20TUNE_FEATURES_tune-armv7at-neon ?= "${TUNE_FEATURES_tune-armv7at} neon"
21PACKAGE_EXTRA_ARCHS_tune-armv7a = "${PACKAGE_EXTRA_ARCHS_tune-armv6} armv7a armv7a-vfp"
22PACKAGE_EXTRA_ARCHS_tune-armv7a-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7a} armv7a-vfp-neon"
23PACKAGE_EXTRA_ARCHS_tune-armv7at = "${PACKAGE_EXTRA_ARCHS_tune-armv6t} armv7a armv7a-vfp armv7at2-vfp"
24PACKAGE_EXTRA_ARCHS_tune-armv7at-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7at} armv7a-vfp-neon armv7at2-vfp-neon"
25
26# VFP Tunes
27AVAILTUNES += "armv7ahf armv7athf armv7ahf-neon armv7athf-neon armv7ahf-neon-vfpv4 armv7athf-neon-vfpv4"
28ARMPKGARCH_tune-armv7ahf ?= "armv7a"
29ARMPKGARCH_tune-armv7athf ?= "armv7a"
30ARMPKGARCH_tune-armv7ahf-neon?= "armv7a"
31ARMPKGARCH_tune-armv7athf-neon ?= "armv7a"
32ARMPKGARCH_tune-armv7ahf-neon-vfpv4 ?= "armv7a"
33ARMPKGARCH_tune-armv7athf-neon-vfpv4 ?= "armv7a"
34TUNE_FEATURES_tune-armv7ahf ?= "${TUNE_FEATURES_tune-armv7a} callconvention-hard"
35TUNE_FEATURES_tune-armv7athf ?= "${TUNE_FEATURES_tune-armv7at} callconvention-hard"
36TUNE_FEATURES_tune-armv7ahf-neon ?= "${TUNE_FEATURES_tune-armv7a-neon} callconvention-hard"
37TUNE_FEATURES_tune-armv7athf-neon ?= "${TUNE_FEATURES_tune-armv7at-neon} callconvention-hard"
38TUNE_FEATURES_tune-armv7ahf-neon-vfpv4 ?= "${TUNE_FEATURES_tune-armv7ahf-neon} vfpv4"
39TUNE_FEATURES_tune-armv7athf-neon-vfpv4 ?= "${TUNE_FEATURES_tune-armv7athf-neon} vfpv4"
40PACKAGE_EXTRA_ARCHS_tune-armv7ahf = "${PACKAGE_EXTRA_ARCHS_tune-armv6hf} armv7ahf-vfp"
41PACKAGE_EXTRA_ARCHS_tune-armv7athf = "${PACKAGE_EXTRA_ARCHS_tune-armv6thf} armv7ahf-vfp armv7at2hf-vfp"
42PACKAGE_EXTRA_ARCHS_tune-armv7ahf-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf} armv7ahf-vfp-neon"
43PACKAGE_EXTRA_ARCHS_tune-armv7athf-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7athf} armv7ahf-vfp-neon armv7at2hf-vfp-neon"
44PACKAGE_EXTRA_ARCHS_tune-armv7ahf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf-neon} armv7ahf-vfp-neon-vfpv4"
45PACKAGE_EXTRA_ARCHS_tune-armv7athf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7athf-neon} armv7athf-vfp-neon-vfpv4"
46
47# Big Endian
48AVAILTUNES += "armv7ab armv7atb armv7ab-neon armv7atb-neon"
49ARMPKGARCH_tune-armv7ab ?= "armv7a"
50ARMPKGARCH_tune-armv7atb ?= "armv7a"
51ARMPKGARCH_tune-armv7ab-neon?= "armv7a"
52ARMPKGARCH_tune-armv7atb-neon ?= "armv7a"
53TUNE_FEATURES_tune-armv7ab ?= "${TUNE_FEATURES_tune-armv7a} bigendian"
54TUNE_FEATURES_tune-armv7atb ?= "${TUNE_FEATURES_tune-armv7at} bigendian"
55TUNE_FEATURES_tune-armv7ab-neon ?= "${TUNE_FEATURES_tune-armv7a-neon} bigendian"
56TUNE_FEATURES_tune-armv7atb-neon ?= "${TUNE_FEATURES_tune-armv7at-neon} bigendian"
57PACKAGE_EXTRA_ARCHS_tune-armv7ab = "${PACKAGE_EXTRA_ARCHS_tune-armv6b} armv7ab-vfp"
58PACKAGE_EXTRA_ARCHS_tune-armv7atb = "${PACKAGE_EXTRA_ARCHS_tune-armv6tb} armv7ab-vfp armv7at2b-vfp"
59PACKAGE_EXTRA_ARCHS_tune-armv7ab-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7ab} armv7ab-vfp-neon"
60PACKAGE_EXTRA_ARCHS_tune-armv7atb-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7atb} armv7ab-vfp-neon armv7at2b-vfp-neon"
61
62# Big Endian + VFP
63AVAILTUNES += "armv7ahfb armv7athfb armv7ahfb-neon armv7athfb-neon"
64ARMPKGARCH_tune-armv7ahfb ?= "armv7a"
65ARMPKGARCH_tune-armv7athfb ?= "armv7a"
66ARMPKGARCH_tune-armv7ahfb-neon?= "armv7a"
67ARMPKGARCH_tune-armv7athfb-neon ?= "armv7a"
68TUNE_FEATURES_tune-armv7ahfb ?= "${TUNE_FEATURES_tune-armv7ahf} bigendian"
69TUNE_FEATURES_tune-armv7athfb ?= "${TUNE_FEATURES_tune-armv7athf} bigendian"
70TUNE_FEATURES_tune-armv7ahfb-neon ?= "${TUNE_FEATURES_tune-armv7ahf-neon} bigendian"
71TUNE_FEATURES_tune-armv7athfb-neon ?= "${TUNE_FEATURES_tune-armv7athf-neon} bigendian"
72PACKAGE_EXTRA_ARCHS_tune-armv7ahfb = "${PACKAGE_EXTRA_ARCHS_tune-armv6hfb} armv7ahfb-vfp"
73PACKAGE_EXTRA_ARCHS_tune-armv7athfb = "${PACKAGE_EXTRA_ARCHS_tune-armv6thfb} armv7ahfb-vfp armv7at2hfb-vfp"
74PACKAGE_EXTRA_ARCHS_tune-armv7ahfb-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahfb} armv7ahfb-vfp-neon"
75PACKAGE_EXTRA_ARCHS_tune-armv7athfb-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7athfb} armv7ahfb-vfp-neon armv7at2hfb-vfp-neon"
diff --git a/meta/conf/machine/include/arm/feature-arm-neon.inc b/meta/conf/machine/include/arm/feature-arm-neon.inc
new file mode 100644
index 0000000000..e8b2b85d5a
--- /dev/null
+++ b/meta/conf/machine/include/arm/feature-arm-neon.inc
@@ -0,0 +1,3 @@
1TUNEVALID[neon] = "Enable Neon SIMD accelerator unit."
2TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "neon", bb.utils.contains("TUNE_FEATURES", "vfpv4", " -mfpu=neon-vfpv4", " -mfpu=neon", d), "" , d)}"
3ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "neon", "-neon", "", d)}"
diff --git a/meta/conf/machine/include/arm/feature-arm-thumb.inc b/meta/conf/machine/include/arm/feature-arm-thumb.inc
new file mode 100644
index 0000000000..fa3a4e5c1f
--- /dev/null
+++ b/meta/conf/machine/include/arm/feature-arm-thumb.inc
@@ -0,0 +1,25 @@
1# The instruction set the compiler should use when generating application
2# code. The kernel is always compiled with arm code at present. arm code
3# is the original 32 bit ARM instruction set, thumb code is the 16 bit
4# encoded RISC sub-set. Thumb code is smaller (maybe 70% of the ARM size)
5# but requires more instructions (140% for 70% smaller code) so may be
6# slower.
7TUNEVALID[thumb] = "Use thumb instructions instead of ARM"
8ARM_THUMB_M_OPT = "${@['-marm', '-mthumb'][d.getVar('ARM_INSTRUCTION_SET', True) == 'thumb']}"
9TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "thumb", " ${ARM_THUMB_M_OPT}", "", d)}"
10OVERRIDES .= "${@bb.utils.contains("TUNE_FEATURES", "thumb", ":thumb", "", d)}"
11
12ARMPKGSFX_THUMB .= "${@bb.utils.contains("TUNE_FEATURES", [ "armv4", "thumb" ], "t", "", d)}"
13ARMPKGSFX_THUMB .= "${@bb.utils.contains("TUNE_FEATURES", [ "armv5", "thumb" ], "t", "", d)}"
14ARMPKGSFX_THUMB .= "${@bb.utils.contains("TUNE_FEATURES", [ "armv6", "thumb" ], "t", "", d)}"
15ARMPKGSFX_THUMB .= "${@bb.utils.contains("TUNE_FEATURES", [ "armv7a", "thumb" ], "t2", "", d)}"
16
17# Whether to compile with code to allow interworking between the two
18# instruction sets. This allows thumb code to be executed on a primarily
19# arm system and vice versa. It is strongly recommended that DISTROs not
20# turn this off - the actual cost is very small.
21TUNEVALID[no-thumb-interwork] = "Disable mixing of thumb and ARM functions"
22TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "no-thumb-interwork", " -mno-thumb-interwork", " -mthumb-interwork", d)}"
23OVERRIDES .= "${@bb.utils.contains("TUNE_FEATURES", "no-thumb-interwork", ":thumb-interwork", "", d)}"
24
25TARGET_CC_KERNEL_ARCH += "-mno-thumb-interwork -marm"
diff --git a/meta/conf/machine/include/arm/feature-arm-vfp.inc b/meta/conf/machine/include/arm/feature-arm-vfp.inc
new file mode 100644
index 0000000000..13927ffc12
--- /dev/null
+++ b/meta/conf/machine/include/arm/feature-arm-vfp.inc
@@ -0,0 +1,9 @@
1TUNEVALID[vfp] = "Enable Vector Floating Point (vfp) unit."
2ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfp", "-vfp", "" ,d)}"
3
4TUNEVALID[vfpv4] = "Enable Vector Floating Point Version 4 (vfpv4) unit."
5ARMPKGSFX_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "vfpv4", "-vfpv4", "" ,d)}"
6
7TUNEVALID[callconvention-hard] = "Enable EABI hard float call convention, requires VFP."
8TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "vfp", bb.utils.contains("TUNE_FEATURES", "callconvention-hard", " -mfloat-abi=hard", " -mfloat-abi=softfp", d), "" ,d)}"
9ARMPKGSFX_EABI .= "${@bb.utils.contains("TUNE_FEATURES", [ "callconvention-hard", "vfp" ], "hf", "", d)}"