diff options
author | Mark Hatle <mark.hatle@windriver.com> | 2014-12-18 16:51:14 +0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-12-23 10:18:19 +0000 |
commit | eba9c1be73a8c1567795b2073fa850537336c7f6 (patch) | |
tree | 42371641af43afb157fcfb98a0ca38e6582180d1 | |
parent | a1d75c2cf8ddb6bb48220ffdc883e11b9c06c8d9 (diff) | |
download | poky-eba9c1be73a8c1567795b2073fa850537336c7f6.tar.gz |
aarch-arm64: Update tune files
arch-arm64 is the base tune file for aarch64. Update this to allow the
system to work with both aarch32 and aarch64 (multilib).
arch-armv8 is for compatibility, it simply uses the base config for now.
feature-arm-thumb was updated, since aarch64 mode does NOT have thumb support.
We should only be processing warnings and additional arguments if thumb
support is enabled on the processor core.
(From OE-Core rev: 03d2f5646485b565cc14a0009b7d5224ab298f4c)
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | meta/conf/machine/include/arm/arch-arm64.inc | 36 | ||||
-rw-r--r-- | meta/conf/machine/include/arm/arch-armv8.inc | 21 | ||||
-rw-r--r-- | meta/conf/machine/include/arm/feature-arm-thumb.inc | 10 |
3 files changed, 44 insertions, 23 deletions
diff --git a/meta/conf/machine/include/arm/arch-arm64.inc b/meta/conf/machine/include/arm/arch-arm64.inc new file mode 100644 index 0000000000..5376b87dd6 --- /dev/null +++ b/meta/conf/machine/include/arm/arch-arm64.inc | |||
@@ -0,0 +1,36 @@ | |||
1 | DEFAULTTUNE ?= "aarch64" | ||
2 | |||
3 | require conf/machine/include/arm/arch-armv7a.inc | ||
4 | |||
5 | TUNEVALID[aarch64] = "Enable instructions for aarch64" | ||
6 | |||
7 | MACHINEOVERRIDES .= "${@bb.utils.contains("TUNE_FEATURES", "aarch64", ":aarch64", "" ,d)}" | ||
8 | |||
9 | # Little Endian base configs | ||
10 | AVAILTUNES += "aarch64 aarch64_be" | ||
11 | ARMPKGARCH_tune-aarch64 ?= "aarch64" | ||
12 | ARMPKGARCH_tune-aarch64_be ?= "aarch64_be" | ||
13 | TUNE_FEATURES_tune-aarch64 ?= "aarch64" | ||
14 | TUNE_FEATURES_tune-aarch64_be ?= "${TUNE_FEATURES_tune-aarch64} bigendian" | ||
15 | BASE_LIB_tune-aarch64 = "lib64" | ||
16 | BASE_LIB_tune-aarch64_be = "lib64" | ||
17 | |||
18 | PACKAGE_EXTRA_ARCHS_tune-aarch64 = "aarch64" | ||
19 | PACKAGE_EXTRA_ARCHS_tune-aarch64_be = "aarch64_be" | ||
20 | |||
21 | ARMPKGSFX_ENDIAN_64 = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", "_be", "", d)}" | ||
22 | TUNE_ARCH_64 = "aarch64${ARMPKGSFX_ENDIAN_64}" | ||
23 | TUNE_PKGARCH_64 = "aarch64${ARMPKGSFX_ENDIAN_64}" | ||
24 | ABIEXTENSION_64 = "" | ||
25 | TARGET_FPU_64 = "" | ||
26 | |||
27 | # Duplicated from arch-arm.inc | ||
28 | TUNE_ARCH_32 = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", "armeb", "arm", d)}" | ||
29 | TUNE_PKGARCH_32 = "${ARMPKGARCH}${ARMPKGSFX_THUMB}${ARMPKGSFX_DSP}${ARMPKGSFX_EABI}${ARMPKGSFX_ENDIAN}${ARMPKGSFX_FPU}" | ||
30 | ABIEXTENSION_32 = "eabi" | ||
31 | TARGET_FPU_32 = "${@d.getVar('ARMPKGSFX_FPU', True).strip('-') or 'soft'}" | ||
32 | |||
33 | TUNE_ARCH = "${@bb.utils.contains("TUNE_FEATURES", "aarch64", "${TUNE_ARCH_64}", "${TUNE_ARCH_32}" ,d)}" | ||
34 | TUNE_PKGARCH = "${@bb.utils.contains("TUNE_FEATURES", "aarch64", "${TUNE_PKGARCH_64}", "${TUNE_PKGARCH_32}" ,d)}" | ||
35 | ABIEXTENSION = "${@bb.utils.contains("TUNE_FEATURES", "aarch64", "${ABIEXTENSION_64}", "${ABIEXTENSION_32}" ,d)}" | ||
36 | TARGET_FPU = "${@bb.utils.contains("TUNE_FEATURES", "aarch64", "${TARGET_FPU_64}", "${TARGET_FPU_32}" ,d)}" | ||
diff --git a/meta/conf/machine/include/arm/arch-armv8.inc b/meta/conf/machine/include/arm/arch-armv8.inc index c86142ab47..5e832fae6d 100644 --- a/meta/conf/machine/include/arm/arch-armv8.inc +++ b/meta/conf/machine/include/arm/arch-armv8.inc | |||
@@ -1,20 +1 @@ | |||
1 | DEFAULTTUNE ?= "aarch64" | require conf/machine/include/arm/arch-arm64.inc | |
2 | |||
3 | ARMPKGARCH ?= "aarch64" | ||
4 | |||
5 | TUNEVALID[aarch64] = "Enable instructions for aarch64" | ||
6 | TUNEVALID[bigendian] = "Enable big-endian mode." | ||
7 | TUNECONFLICTS[aarch64] = "" | ||
8 | MACHINEOVERRIDES .= "${@bb.utils.contains("TUNE_FEATURES", "aarch64", ":aarch64", "" ,d)}" | ||
9 | |||
10 | # Little Endian base configs | ||
11 | AVAILTUNES += "aarch64 aarch64_be" | ||
12 | TUNE_FEATURES_tune-aarch64 ?= "aarch64" | ||
13 | TUNE_FEATURES_tune-aarch64_be ?= "${TUNE_FEATURES_tune-aarch64} bigendian" | ||
14 | |||
15 | ARMPKGSFX_ENDIAN = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", "_be", "", d)}" | ||
16 | |||
17 | TUNE_ARCH = "aarch64${ARMPKGSFX_ENDIAN}" | ||
18 | TUNE_PKGARCH = "aarch64${ARMPKGSFX_ENDIAN}" | ||
19 | |||
20 | PACKAGE_EXTRA_ARCHS = "aarch64${ARMPKGSFX_ENDIAN}" | ||
diff --git a/meta/conf/machine/include/arm/feature-arm-thumb.inc b/meta/conf/machine/include/arm/feature-arm-thumb.inc index a94386f577..8e6619d1b5 100644 --- a/meta/conf/machine/include/arm/feature-arm-thumb.inc +++ b/meta/conf/machine/include/arm/feature-arm-thumb.inc | |||
@@ -18,6 +18,8 @@ ARM_THUMB_SUFFIX .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7m', 't2', '', d | |||
18 | # some recipe explicitly sets ARM_INSTRUCTION_SET to "arm" | 18 | # some recipe explicitly sets ARM_INSTRUCTION_SET to "arm" |
19 | ARM_M_OPT = "${@bb.utils.contains('TUNE_FEATURES', 'arm', '${ARM_THUMB_OPT}', 'thumb', d)}" | 19 | ARM_M_OPT = "${@bb.utils.contains('TUNE_FEATURES', 'arm', '${ARM_THUMB_OPT}', 'thumb', d)}" |
20 | python () { | 20 | python () { |
21 | if bb.utils.contains('TUNE_FEATURES', 'thumb', 'False', 'True', d): | ||
22 | return | ||
21 | selected = d.getVar('ARM_INSTRUCTION_SET', True) | 23 | selected = d.getVar('ARM_INSTRUCTION_SET', True) |
22 | if selected == None: | 24 | if selected == None: |
23 | return | 25 | return |
@@ -37,8 +39,10 @@ ARMPKGSFX_THUMB .= "${@bb.utils.contains('TUNE_FEATURES', 'thumb', '${ARM_THUMB_ | |||
37 | # arm system and vice versa. It is strongly recommended that DISTROs not | 39 | # arm system and vice versa. It is strongly recommended that DISTROs not |
38 | # turn this off - the actual cost is very small. | 40 | # turn this off - the actual cost is very small. |
39 | TUNEVALID[no-thumb-interwork] = "Disable mixing of thumb and ARM functions" | 41 | TUNEVALID[no-thumb-interwork] = "Disable mixing of thumb and ARM functions" |
40 | TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'no-thumb-interwork', ' -mno-thumb-interwork', ' -mthumb-interwork', d)}" | 42 | THUMB_TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'no-thumb-interwork', ' -mno-thumb-interwork', ' -mthumb-interwork', d)}" |
41 | OVERRIDES .= "${@bb.utils.contains('TUNE_FEATURES', 'no-thumb-interwork', ':thumb-interwork', '', d)}" | 43 | THUMB_OVERRIDES .= "${@bb.utils.contains('TUNE_FEATURES', 'no-thumb-interwork', ':thumb-interwork', '', d)}" |
44 | TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'thumb', ' ${THUMB_TUNE_CCARGS}', '', d)}" | ||
45 | OVERRIDES .= "${@bb.utils.contains('TUNE_FEATURES', 'thumb', ' ${THUMB_OVERRIDES}', '', d)}" | ||
42 | 46 | ||
43 | # what about armv7m devices which don't support -marm (e.g. Cortex-M3)? | 47 | # what about armv7m devices which don't support -marm (e.g. Cortex-M3)? |
44 | TARGET_CC_KERNEL_ARCH += "-mno-thumb-interwork -marm" | 48 | TARGET_CC_KERNEL_ARCH += "${@bb.utils.contains('TUNE_FEATURES', 'thumb', '-mno-thumb-interwork -marm', '', d)}" |