[oe] [RFC][PATCH] distro: Move thumb into distro features
Khem Raj
raj.khem at gmail.com
Tue Jul 20 05:08:02 UTC 2010
On Mon, Jul 19, 2010 at 3:46 PM, Khem Raj <raj.khem at gmail.com> wrote:
> On Mon, Jul 19, 2010 at 1:18 AM, Khem Raj <raj.khem at gmail.com> wrote:
>> * 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.
>
> I accidentally hit push button in wrong branch and this commit got pushed
> I will revert it once I get home later today if someone gets bitten before
> feel free to revert it.
Done. Meanwhile, Does this patch look ok for .dev ? I would like some ACKs
Thanks
-Khem
>
>>
>> Signed-off-by: Khem Raj <raj.khem at gmail.com>
>> ---
>> conf/distro/angstrom-2008.1.conf | 1 +
>> conf/distro/gmustix.conf | 2 +
>> conf/distro/include/arm-thumb.inc | 32 +++++++++++++++++++++++++++
>> conf/distro/kaeilos-2010.conf | 1 +
>> conf/distro/kaeilos.conf | 1 +
>> conf/distro/micro.conf | 1 +
>> conf/distro/minimal.conf | 3 +-
>> conf/distro/shr.conf | 1 +
>> conf/distro/slugos.conf | 2 +
>> conf/machine/include/ixp4xx.inc | 1 -
>> conf/machine/include/tune-arm1136-novfp.inc | 3 --
>> conf/machine/include/tune-arm1136jf-s.inc | 3 --
>> conf/machine/include/tune-arm1176jzf-s.inc | 3 --
>> conf/machine/include/tune-arm920t.inc | 4 ---
>> conf/machine/include/tune-arm926ejs.inc | 3 --
>> conf/machine/include/tune-arm9tdmi.inc | 4 ---
>> conf/machine/include/tune-armv7.inc | 4 ---
>> conf/machine/include/tune-ep9312.inc | 3 --
>> conf/machine/include/tune-thumb.inc | 32 ---------------------------
>> conf/machine/include/tune-xscale.inc | 4 ---
>> conf/machine/palmz31.conf | 3 --
>> conf/machine/palmz72.conf | 3 --
>> 22 files changed, 43 insertions(+), 71 deletions(-)
>> create mode 100644 conf/distro/include/arm-thumb.inc
>> delete mode 100644 conf/machine/include/tune-thumb.inc
>>
>> diff --git a/conf/distro/angstrom-2008.1.conf b/conf/distro/angstrom-2008.1.conf
>> index 7c70c84..84e8096 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 17f8056..5dd519d 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 0000000..cd88bb4
>> --- /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 4bb637c..ba37445 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 eb12d2e..b141280 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 9885425..fc50391 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 e400c14..9a08130 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 f0167da..9fd156f 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 5a2f0dc..5f9c06c 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
>> +
>> diff --git a/conf/machine/include/ixp4xx.inc b/conf/machine/include/ixp4xx.inc
>> index 192cbb1..cf7f0dd 100644
>> --- a/conf/machine/include/ixp4xx.inc
>> +++ b/conf/machine/include/ixp4xx.inc
>> @@ -22,7 +22,6 @@ IMAGE_FSTYPES ?= "jffs2 tar.gz"
>> EXTRA_IMAGECMD_jffs2 = "--pad --eraseblock=0x20000 -n"
>>
>> require conf/machine/include/tune-xscale.inc
>> -require conf/machine/include/tune-thumb.inc
>>
>> #-------------------------------------------------------------------------------
>> # Board defaults
>> diff --git a/conf/machine/include/tune-arm1136-novfp.inc b/conf/machine/include/tune-arm1136-novfp.inc
>> index e1f7945..58134b7 100644
>> --- a/conf/machine/include/tune-arm1136-novfp.inc
>> +++ b/conf/machine/include/tune-arm1136-novfp.inc
>> @@ -5,6 +5,3 @@ TARGET_CC_ARCH = "-march=armv6j -mtune=arm1136jf-s"
>> FEED_ARCH = "armv6-novfp"
>> BASE_PACKAGE_ARCH = "armv6-novfp"
>> PACKAGE_EXTRA_ARCHS += "armv4 armv4t armv5te armv6-novfp"
>> -
>> -# Include tune file for thumb support, it defaults to off so DISTROs can turn it on if they wish
>> -require conf/machine/include/tune-thumb.inc
>> diff --git a/conf/machine/include/tune-arm1136jf-s.inc b/conf/machine/include/tune-arm1136jf-s.inc
>> index c532b9c..2944cc7 100644
>> --- a/conf/machine/include/tune-arm1136jf-s.inc
>> +++ b/conf/machine/include/tune-arm1136jf-s.inc
>> @@ -2,6 +2,3 @@ TARGET_CC_ARCH = "-march=armv6j -mtune=arm1136jf-s -mfpu=vfp -mfloat-abi=softfp"
>> FEED_ARCH = "armv6"
>> BASE_PACKAGE_ARCH = "armv6"
>> PACKAGE_EXTRA_ARCHS += "armv4 armv4t armv5te armv6"
>> -
>> -# Include tune file for thumb support, it defaults to off so DISTROs can turn it on if they wish
>> -require conf/machine/include/tune-thumb.inc
>> diff --git a/conf/machine/include/tune-arm1176jzf-s.inc b/conf/machine/include/tune-arm1176jzf-s.inc
>> index b7c5291..ee2884b 100644
>> --- a/conf/machine/include/tune-arm1176jzf-s.inc
>> +++ b/conf/machine/include/tune-arm1176jzf-s.inc
>> @@ -2,6 +2,3 @@ TARGET_CC_ARCH = "-march=armv6j -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=softfp
>> FEED_ARCH = "armv6"
>> BASE_PACKAGE_ARCH = "armv6"
>> PACKAGE_EXTRA_ARCHS += "armv4 armv4t armv5te armv6"
>> -
>> -# Include tune file for thumb support, it defaults to off so DISTROs can turn it on if they wish
>> -require conf/machine/include/tune-thumb.inc
>> diff --git a/conf/machine/include/tune-arm920t.inc b/conf/machine/include/tune-arm920t.inc
>> index 5a373e9..fee5c58 100644
>> --- a/conf/machine/include/tune-arm920t.inc
>> +++ b/conf/machine/include/tune-arm920t.inc
>> @@ -2,7 +2,3 @@ FEED_ARCH = "armv4t"
>> BASE_PACKAGE_ARCH = "armv4t"
>> TARGET_CC_ARCH = "-march=armv4t -mtune=arm920t"
>> PACKAGE_EXTRA_ARCHS += "armv4 armv4t"
>> -
>> -# Include tune file for thumb support, it defaults to off so DISTROs can turn it on if they wish
>> -require conf/machine/include/tune-thumb.inc
>> -
>> diff --git a/conf/machine/include/tune-arm926ejs.inc b/conf/machine/include/tune-arm926ejs.inc
>> index f6f5064..f41e460 100644
>> --- a/conf/machine/include/tune-arm926ejs.inc
>> +++ b/conf/machine/include/tune-arm926ejs.inc
>> @@ -5,6 +5,3 @@ PACKAGE_EXTRA_ARCHS += "armv4 armv4t armv5te"
>> # For gcc 4.x you need:
>> TARGET_CC_ARCH = "-march=armv5te -mtune=arm926ej-s"
>> BASE_PACKAGE_ARCH = "armv5te"
>> -
>> -# Include tune file for thumb support, it defaults to off so DISTROs can turn it on if they wish
>> -require conf/machine/include/tune-thumb.inc
>> diff --git a/conf/machine/include/tune-arm9tdmi.inc b/conf/machine/include/tune-arm9tdmi.inc
>> index a11ee38..d788b53 100644
>> --- a/conf/machine/include/tune-arm9tdmi.inc
>> +++ b/conf/machine/include/tune-arm9tdmi.inc
>> @@ -2,7 +2,3 @@ FEED_ARCH = "armv4t"
>> BASE_PACKAGE_ARCH = "armv4t"
>> PACKAGE_EXTRA_ARCHS += "armv4 armv4t"
>> TARGET_CC_ARCH = "-mcpu=arm9tdmi -mtune=arm9tdmi"
>> -
>> -# Include tune file for thumb support, it defaults to off so DISTROs can turn it on if they wish
>> -require conf/machine/include/tune-thumb.inc
>> -
>> diff --git a/conf/machine/include/tune-armv7.inc b/conf/machine/include/tune-armv7.inc
>> index 05ec3da..379a3eb 100644
>> --- a/conf/machine/include/tune-armv7.inc
>> +++ b/conf/machine/include/tune-armv7.inc
>> @@ -5,7 +5,3 @@ TARGET_CC_ARCH = "-march=armv7 -mfpu=vfp -mfloat-abi=softfp"
>> FEED_ARCH = "armv7"
>> PACKAGE_EXTRA_ARCHS += "armv4 armv4t armv5te armv6 armv7"
>> BASE_PACKAGE_ARCH = "armv7"
>> -
>> -# Include tune file for thumb support, it defaults to off so DISTROs can turn it on if they wish
>> -require conf/machine/include/tune-thumb.inc
>> -
>> diff --git a/conf/machine/include/tune-ep9312.inc b/conf/machine/include/tune-ep9312.inc
>> index c8770e0..7458281 100644
>> --- a/conf/machine/include/tune-ep9312.inc
>> +++ b/conf/machine/include/tune-ep9312.inc
>> @@ -5,9 +5,6 @@ PACKAGE_EXTRA_ARCHS += "armv4t ep9312"
>> BASE_PACKAGE_ARCH = "ep9312"
>> FEED_ARCH = "ep9312"
>>
>> -# Include tune file for thumb support, it defaults to off so DISTROs can turn it on if they wish
>> -require conf/machine/include/tune-thumb.inc
>> -
>> FULL_OPTIMIZATION = "-fexpensive-optimizations -fomit-frame-pointer -frename-registers -O -fno-signed-zeros"
>> DEBUG_OPTIMIZATION = "-O -fno-omit-frame-pointer -g"
>> SELECTED_OPTIMIZATION = "${@bb.data.getVar(['FULL_OPTIMIZATION', 'DEBUG_OPTIMIZATION'][bb.data.getVar('DEBUG_BUILD', d, 1) == '1'], d, 1)}"
>> diff --git a/conf/machine/include/tune-thumb.inc b/conf/machine/include/tune-thumb.inc
>> deleted file mode 100644
>> index cd88bb4..0000000
>> --- a/conf/machine/include/tune-thumb.inc
>> +++ /dev/null
>> @@ -1,32 +0,0 @@
>> -#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/machine/include/tune-xscale.inc b/conf/machine/include/tune-xscale.inc
>> index 3a6bd0e..f0f58bc 100644
>> --- a/conf/machine/include/tune-xscale.inc
>> +++ b/conf/machine/include/tune-xscale.inc
>> @@ -7,7 +7,3 @@ TARGET_CC_ARCH = "-march=armv5te -mtune=xscale"
>> TARGET_CC_KERNEL_ARCH = "-march=armv5te -mtune=xscale"
>> PACKAGE_EXTRA_ARCHS += "${@['armv4b armv4tb armv5teb', 'armv4 armv4t armv5te'][ bb.data.getVar('TARGET_ARCH', d, 1) == 'arm']}"
>> BASE_PACKAGE_ARCH = "${@['armv5teb', 'armv5te'][bb.data.getVar('TARGET_ARCH', d, 1) == 'arm']}"
>> -
>> -# Include tune file for thumb support, it defaults to off so DISTROs can turn it on if they wish
>> -require conf/machine/include/tune-thumb.inc
>> -
>> diff --git a/conf/machine/palmz31.conf b/conf/machine/palmz31.conf
>> index 0332952..9fb5f7e 100644
>> --- a/conf/machine/palmz31.conf
>> +++ b/conf/machine/palmz31.conf
>> @@ -11,9 +11,6 @@ MACHINE_DISPLAY_HEIGHT_PIXELS = "160"
>>
>> SERIAL_CONSOLE = "115200 ttyS0"
>>
>> -# Use tune-xscale per default. Machine independent feeds should be built with tune-strongarm.
>> -require conf/machine/include/tune-thumb.inc
>> -
>> MACHINE_EXTRA_RRECOMMENDS += "kernel-module-i2c-pxa \
>> kernel-module-i2c-algo-pxa \
>> kernel-module-i2c-dev \
>> diff --git a/conf/machine/palmz72.conf b/conf/machine/palmz72.conf
>> index 502c11a..9766434 100644
>> --- a/conf/machine/palmz72.conf
>> +++ b/conf/machine/palmz72.conf
>> @@ -11,9 +11,6 @@ MACHINE_DISPLAY_HEIGHT_PIXELS = "320"
>>
>> SERIAL_CONSOLE = "115200 ttyS0"
>>
>> -# Use tune-xscale per default. Machine independent feeds should be built with tune-strongarm.
>> -require conf/machine/include/tune-thumb.inc
>> -
>> MACHINE_EXTRA_RRECOMMENDS += "kernel-module-i2c-pxa \
>> kernel-module-i2c-algo-pxa \
>> kernel-module-i2c-dev \
>> --
>> 1.7.0.4
>>
>>
>
More information about the Openembedded-devel
mailing list