[OE-core] [PATCH 22/22] feature-arm-thumb: Take ARM_INSTRUCTION_SET into account to decide thumb mode

Richard Purdie richard.purdie at linuxfoundation.org
Fri Aug 5 11:39:34 UTC 2011


On Fri, 2011-08-05 at 11:59 +0100, Phil Blundell wrote:
> On Mon, 2011-08-01 at 14:14 +0100, Richard Purdie wrote:
> > On Mon, 2011-08-01 at 00:36 -0700, Saul Wold wrote:
> > > From: Khem Raj <raj.khem at gmail.com>
> > > 
> > > This will decouple the compiling in thumb mode from having thumb
> > > capable cores.
> > > 
> > > Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > > ---
> > >  .../conf/machine/include/arm/feature-arm-thumb.inc |    6 ++++--
> > >  1 files changed, 4 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/meta/conf/machine/include/arm/feature-arm-thumb.inc b/meta/conf/machine/include/arm/feature-arm-thumb.inc
> > > index e7d392e..533eab9 100644
> > > --- a/meta/conf/machine/include/arm/feature-arm-thumb.inc
> > > +++ b/meta/conf/machine/include/arm/feature-arm-thumb.inc
> > > @@ -4,9 +4,11 @@
> > >  # 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.
> > > -TUNEVALID[thumb] = "Use thumb instructions instead of ARM"
> > > -ARM_THUMB_M_OPT = "${@['-mno-thumb', '-mthumb'][bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) == 'thumb']}"
> > > +TUNEVALID[thumb] = "Use thumb instructions instead of ARM if ARM_INSTRUCTION_SET != arm"
> > > +ARM_THUMB_M_OPT = "${@['-mthumb', '-mno-thumb'][bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) != 'arm']}"
> > >  TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "thumb", "${ARM_THUMB_M_OPT}", "${ARM_THUMB_M_OPT}", d)}"
> > > +
> > > +TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "thumb", "-mthumb", "-mno-thumb", d)}"
> > >  OVERRIDES .= "${@bb.utils.contains("TUNE_FEATURES", "thumb", ":thumb", "", d)}"
> > >  
> > >  # Note armv7 will hit on armv7a as well
> > 
> > The original change committed into master in my absence is broken. This
> > patch is just making things even worse and more broken :(
> 
> What's the current situation with this?  As far as I can tell from the
> git log, there doesn't appear to have been any significant change in
> this area since last week: the head of feature-arm-thumb.inc is still at
> the allegedly-broken commit e23f9ce92.  
> 
> Does anybody have a summary of what exactly is broken at the moment and
> what is being done about it?

ARM_THUMB_M_OPT = "${@['-mno-thumb', '-mthumb'][bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) == 'thumb']}"
TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "thumb", "${ARM_THUMB_M_OPT}", "${ARM_THUMB_M_OPT}", d)}"

Master has the above. This means it can set -mthumb for machines that don't have the thumb feature which seems wrong to me. I suspect it should be:

TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "thumb", "${ARM_THUMB_M_OPT}", "-mno-thumb", d)}"

or if gcc can't cope with that,

TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "thumb", "${ARM_THUMB_M_OPT}", "", d)}"

instead.

Cheers,

Richard





More information about the Openembedded-core mailing list