[Buildroot] [PATCH 02/16] arch/arm: Cortex-M3 provides only Thumb-2
Thomas Petazzoni
thomas.petazzoni at free-electrons.com
Thu Mar 17 13:06:24 UTC 2016
Hello,
On Thu, 17 Mar 2016 12:08:36 +0100, Peter Korsgaard wrote:
> > ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB):$(BR2_CPU_HAS_THUMB2),y:)
> > GLIBC_EXTRA_CFLAGS += -marm
> > endif
>
> > And so on everywhere where we need to do things depending on whether
> > Thumb1 or Thumb2 is used.
>
> Yes. A quick grep shows that we only need to do this in a few places:
>
> git grep 'ifeq.*BR2_ARM_INSTRUCTIONS_THUMB),y'
> package/dmalloc/dmalloc.mk:ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y)
> package/glibc/glibc.mk:ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y)
> package/libglib2/libglib2.mk:ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y)
> package/qt/qt.mk:ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y)
Correct.
> Notice that we don't seem to do it for musl?
See patch 07/16.
> > So, while using Thumb1 or Thumb2 is just a matter of passing -mthumb to
> > gcc and would therefore lead us to think that a single options is
> > sufficient, I found it clearer to keep two separate options.
>
> Is there any other situations where we want to know the difference
> between thumb1 and thumb2? It might make sense to default to thumb
> instructions for systems supporting thumb2, but not for systems using
> thumb1 and the tradeoff is less clear - But that is also simple to do in
> kconfig with:
>
> default BR2_ARM_INSTRUCTIONS_THUMB if BR2_ARM_CPU_HAS_THUMB2
>
> It is really a question about trading off complexity in one place vs
> adding it somewhere else, so I'm not sure. You could argue that having a
> single thumb kconfig option would be simpler for users though (on the
> other hand, having explicit thumb1/thumb2 is perhaps clearer).
I also find it clearer to have separate thumb1/thumb2 options for the
user. I tried something like:
config BR2_ARM_INSTRUCTIONS_THUMB
bool "thumb" if BR2_ARM_CPU_HAS_THUMB
bool "thumb2" if BR2_ARM_CPU_HAS_THUMB2
but it wasn't working. And if we make BR2_ARM_CPU_HAS_THUMB2 select
BR2_ARM_CPU_HAS_THUMB as suggested by Arnout, it would have to be:
config BR2_ARM_INSTRUCTIONS_THUMB
bool "thumb" if BR2_ARM_CPU_HAS_THUMB && !BR2_ARM_CPU_THUMB2
bool "thumb2" if BR2_ARM_CPU_HAS_THUMB2
Hence my suggestion to keep both BR2_ARM_INSTRUCTIONS_THUMB and
BR2_ARM_INSTRUCTIONS_THUMB2.
Best regards,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
More information about the buildroot
mailing list