diff options
author | Khem Raj <raj.khem@gmail.com> | 2010-07-18 22:18:55 +0000 |
---|---|---|
committer | Khem Raj <raj.khem@gmail.com> | 2010-07-21 10:24:49 -0700 |
commit | e7adac34e40afeb0c0ae5fe3d1207d9bf10dfabc (patch) | |
tree | f9932465ae13556f8d7fd2259d75f137f62ffa7d /conf/distro | |
parent | 49cd7db742d12a7cf5c88673625561524044cd72 (diff) |
distro: Move thumb into distro features
* Currenlty we define the thumb specific overrides in machine tune files
and as machine conf files are included before the distro conf files
the overrides dont get right values and set incorrectly.
* This patch moves the tune-thumb.inc from machine/include into
distro/include and lets distro decide on thumb and thumb-interworking
features based on the machine selected. If a machine which does not
support thumb like all armv4 based machines is selected then distro
makes correct decision now to disable thumb and thumb-interworking
based upon the machine seletected.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Acked-by: Koen Kooi <koen@openembedded.org>
Acked-by: Martin Jansa <Martin.Jansa@gmail.com>
Diffstat (limited to 'conf/distro')
-rw-r--r-- | conf/distro/angstrom-2008.1.conf | 1 | ||||
-rw-r--r-- | conf/distro/gmustix.conf | 2 | ||||
-rw-r--r-- | conf/distro/include/arm-thumb.inc | 32 | ||||
-rw-r--r-- | conf/distro/kaeilos-2010.conf | 1 | ||||
-rw-r--r-- | conf/distro/kaeilos.conf | 1 | ||||
-rw-r--r-- | conf/distro/micro.conf | 1 | ||||
-rw-r--r-- | conf/distro/minimal.conf | 3 | ||||
-rw-r--r-- | conf/distro/shr.conf | 1 | ||||
-rw-r--r-- | conf/distro/slugos.conf | 2 |
9 files changed, 43 insertions, 1 deletions
diff --git a/conf/distro/angstrom-2008.1.conf b/conf/distro/angstrom-2008.1.conf index 7c70c84552..84e80968a8 100644 --- a/conf/distro/angstrom-2008.1.conf +++ b/conf/distro/angstrom-2008.1.conf @@ -136,6 +136,7 @@ PREFERRED_VERSION_binutils-cross-sdk_avr32 = "2.17" # Toolchain virtuals: require conf/distro/include/toolchain-${TOOLCHAIN_TYPE}.inc +require conf/distro/include/arm-thumb.inc PREFERRED_PROVIDER_dbus-glib = "dbus-glib" PREFERRED_PROVIDER_hotplug = "udev" diff --git a/conf/distro/gmustix.conf b/conf/distro/gmustix.conf index 17f805617a..5dd519d90a 100644 --- a/conf/distro/gmustix.conf +++ b/conf/distro/gmustix.conf @@ -5,6 +5,8 @@ INHERIT += "package_tar package_ipk" LIBC = "uclibc" require conf/distro/include/${LIBC}.inc +require conf/distro/include/arm-thumb.inc + TARGET_OS = "linux-uclibc" TARGET_FPU = "soft" IMAGE_FSTYPES = "jffs2" diff --git a/conf/distro/include/arm-thumb.inc b/conf/distro/include/arm-thumb.inc new file mode 100644 index 0000000000..cd88bb4786 --- /dev/null +++ b/conf/distro/include/arm-thumb.inc @@ -0,0 +1,32 @@ +#tune file for thumb instructions + +ARM_INSTRUCTION_SET ?= "arm" +# "arm" "thumb" +# The instruction set the compiler should use when generating application +# code. The kernel is always compiled with arm code at present. arm code +# is the original 32 bit ARM instruction set, thumb code is the 16 bit +# encoded RISC sub-set. Thumb code is smaller (maybe 70% of the ARM size) +# but requires more instructions (140% for 70% smaller code) so may be +# slower. + +THUMB_INTERWORK ?= "no" +# "yes" "no" +# Whether to compile with code to allow interworking between the two +# instruction sets. This allows thumb code to be executed on a primarily +# arm system and vice versa. It is strongly recommended that DISTROs not +# turn this off - the actual cost is very small. + +OVERRIDE_THUMB = "${@['', ':thumb'][bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) == 'thumb']}" +OVERRIDE_INTERWORK = "${@['', ':thumb-interwork'][bb.data.getVar('THUMB_INTERWORK', d, 1) == 'yes']}" +OVERRIDES .= "${OVERRIDE_THUMB}${OVERRIDE_INTERWORK}" + +# Compiler and linker options for application code and kernel code. These +# options ensure that the compiler has the correct settings for the selected +# instruction set and interworking. +ARM_INTERWORK_M_OPT = "${@['-mno-thumb-interwork', '-mthumb-interwork'][bb.data.getVar('THUMB_INTERWORK', d, 1) == 'yes']}" +ARM_THUMB_M_OPT = "${@['-mno-thumb', '-mthumb'][bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) == 'thumb']}" + +# +TARGET_CC_ARCH += "${ARM_INTERWORK_M_OPT} ${ARM_THUMB_M_OPT}" +TARGET_CC_KERNEL_ARCH += "-mno-thumb-interwork -mno-thumb" + diff --git a/conf/distro/kaeilos-2010.conf b/conf/distro/kaeilos-2010.conf index 4bb637cfa6..ba374458f7 100644 --- a/conf/distro/kaeilos-2010.conf +++ b/conf/distro/kaeilos-2010.conf @@ -96,6 +96,7 @@ PREFERRED_VERSION_gcc-cross-intermediate ?= "${KAEILOS_GCC_VERSION}" PREFERRED_ARM_INSTRUCTION_SET ?= "thumb" require conf/distro/include/sane-toolchain.inc +require conf/distro/include/arm-thumb.inc PREFERRED_PROVIDER_dbus-glib = "dbus-glib" PREFERRED_PROVIDER_hotplug = "udev" diff --git a/conf/distro/kaeilos.conf b/conf/distro/kaeilos.conf index eb12d2ed04..b1412805d1 100644 --- a/conf/distro/kaeilos.conf +++ b/conf/distro/kaeilos.conf @@ -124,6 +124,7 @@ PREFERRED_VERSION_binutils-cross-sdk_avr32 = "2.17" # Toolchain virtuals: require conf/distro/include/toolchain-${TOOLCHAIN_TYPE}.inc +require conf/distro/include/arm-thumb.inc PREFERRED_PROVIDER_dbus-glib = "dbus-glib" PREFERRED_PROVIDER_hotplug = "udev" diff --git a/conf/distro/micro.conf b/conf/distro/micro.conf index 9885425979..fc50391f30 100644 --- a/conf/distro/micro.conf +++ b/conf/distro/micro.conf @@ -66,6 +66,7 @@ PREFERRED_VERSION_glibc ?= "2.10.1" PREFERRED_VERSION_glibc-initial ?= "2.10.1" PREFERRED_ARM_INSTRUCTION_SET ?= "thumb" require conf/distro/include/sane-toolchain.inc +require conf/distro/include/arm-thumb.inc ############################################################################# # OVERRIDES adjusted from bitbake.conf to feature the MACHINE_CLASS diff --git a/conf/distro/minimal.conf b/conf/distro/minimal.conf index e400c14d65..9a081309e1 100644 --- a/conf/distro/minimal.conf +++ b/conf/distro/minimal.conf @@ -16,7 +16,7 @@ DISTRO_VERSION = "dev-snapshot-${SRCDATE}" DISTRO_TYPE ?= "debug" # Ensure some form of release config, so error out if someone thinks he knows better -DISTRO_CHECK := "${@bb.data.getVar('DISTRO_VERSION',d,1) or bb.fatal('Remove this line or set a dummy DISTRO_VERSION") +DISTRO_CHECK := "${@bb.data.getVar('DISTRO_VERSION',d,1) or bb.fatal('Remove this line or set a dummy DISTRO_VERSION')}" ############################################################################# # FEATURE SELECTION @@ -86,6 +86,7 @@ MACHINE_KERNEL_VERSION = "2.6" ############################################################################# LIBC ?= "eglibc" require conf/distro/include/sane-toolchain.inc +require conf/distro/include/arm-thumb.inc ############################################################################# # PREFERRED VERSIONS diff --git a/conf/distro/shr.conf b/conf/distro/shr.conf index f0167da3a8..9fd156fc1f 100644 --- a/conf/distro/shr.conf +++ b/conf/distro/shr.conf @@ -159,6 +159,7 @@ PREFERRED_VERSION_eglibc ?= "2.12" PREFERRED_VERSION_eglibc-initial ?= "2.12" PREFERRED_GCC_VERSION ?= "4.5" require conf/distro/include/sane-toolchain.inc +require conf/distro/include/arm-thumb.inc # Set some java bits require conf/distro/include/sane-toolchain-java.inc diff --git a/conf/distro/slugos.conf b/conf/distro/slugos.conf index 5a2f0dc620..5f9c06ca0b 100644 --- a/conf/distro/slugos.conf +++ b/conf/distro/slugos.conf @@ -22,3 +22,5 @@ require conf/distro/include/slugos.inc # Can be either glibc or eglibc (or perhaps even uclibc) LIBC ?= "eglibc" require conf/distro/include/${LIBC}.inc +require conf/distro/include/arm-thumb.inc + |