On Mon, Jul 19, 2010 at 3:46 PM, Khem Raj <raj.k...@gmail.com> wrote: > On Mon, Jul 19, 2010 at 1:18 AM, Khem Raj <raj.k...@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.k...@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 >> >> > _______________________________________________ Openembedded-devel mailing list Openembedded-devel@lists.openembedded.org http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel