All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC][PATCH] distro: Move thumb into distro features
@ 2010-07-19  8:18 Khem Raj
  2010-07-19 22:46 ` Khem Raj
  0 siblings, 1 reply; 5+ messages in thread
From: Khem Raj @ 2010-07-19  8:18 UTC (permalink / raw)
  To: openembedded-devel

* 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>
---
 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




^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [RFC][PATCH] distro: Move thumb into distro features
  2010-07-19  8:18 [RFC][PATCH] distro: Move thumb into distro features Khem Raj
@ 2010-07-19 22:46 ` Khem Raj
  2010-07-20  5:08   ` Khem Raj
  0 siblings, 1 reply; 5+ messages in thread
From: Khem Raj @ 2010-07-19 22:46 UTC (permalink / raw)
  To: openembedded-devel

On Mon, Jul 19, 2010 at 1:18 AM, Khem Raj <raj.khem@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.

>
> Signed-off-by: Khem Raj <raj.khem@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
>
>



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [RFC][PATCH] distro: Move thumb into distro features
  2010-07-19 22:46 ` Khem Raj
@ 2010-07-20  5:08   ` Khem Raj
  2010-07-21  8:05     ` Martin Jansa
  2010-07-21  8:21     ` Koen Kooi
  0 siblings, 2 replies; 5+ messages in thread
From: Khem Raj @ 2010-07-20  5:08 UTC (permalink / raw)
  To: openembedded-devel

On Mon, Jul 19, 2010 at 3:46 PM, Khem Raj <raj.khem@gmail.com> wrote:
> On Mon, Jul 19, 2010 at 1:18 AM, Khem Raj <raj.khem@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@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
>>
>>
>



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [RFC][PATCH] distro: Move thumb into distro features
  2010-07-20  5:08   ` Khem Raj
@ 2010-07-21  8:05     ` Martin Jansa
  2010-07-21  8:21     ` Koen Kooi
  1 sibling, 0 replies; 5+ messages in thread
From: Martin Jansa @ 2010-07-21  8:05 UTC (permalink / raw)
  To: openembedded-devel

On Mon, Jul 19, 2010 at 10:08:02PM -0700, Khem Raj wrote:
> On Mon, Jul 19, 2010 at 3:46 PM, Khem Raj <raj.khem@gmail.com> wrote:
> > On Mon, Jul 19, 2010 at 1:18 AM, Khem Raj <raj.khem@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

Looks fine for SHR
Acked-by: Martin Jansa <Martin.Jansa@gmail.com>

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [RFC][PATCH] distro: Move thumb into distro features
  2010-07-20  5:08   ` Khem Raj
  2010-07-21  8:05     ` Martin Jansa
@ 2010-07-21  8:21     ` Koen Kooi
  1 sibling, 0 replies; 5+ messages in thread
From: Koen Kooi @ 2010-07-21  8:21 UTC (permalink / raw)
  To: openembedded-devel

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 20-07-10 07:08, Khem Raj wrote:
> On Mon, Jul 19, 2010 at 3:46 PM, Khem Raj <raj.khem@gmail.com> wrote:
>> On Mon, Jul 19, 2010 at 1:18 AM, Khem Raj <raj.khem@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

Looks fine for angstrom:

Acked-by: Koen Kooi <koen@openembedded.org>

> 
> Thanks
> -Khem
> 
>>
>>>
>>> Signed-off-by: Khem Raj <raj.khem@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
>>>
>>>
>>

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Darwin)

iD8DBQFMRq4AMkyGM64RGpERAogkAKCEPf6FWvOreFYMwyZ0+ChRWAoXYQCeI+a4
mzG9x4FFqiWX/AlMgvIwZtY=
=LD4G
-----END PGP SIGNATURE-----




^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2010-07-21  8:21 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-07-19  8:18 [RFC][PATCH] distro: Move thumb into distro features Khem Raj
2010-07-19 22:46 ` Khem Raj
2010-07-20  5:08   ` Khem Raj
2010-07-21  8:05     ` Martin Jansa
2010-07-21  8:21     ` Koen Kooi

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.