[Buildroot] [PATCH v2] package/uclibc: Enable compile in thumb mode configuration option
Paul Enman
paul.enman at gmail.com
Mon Dec 14 01:28:40 UTC 2015
From: penman <paul.enman at gmail.com>
Signed-off-by: Paul Enman <paul.enman at gmail.com>
---
When buildroot is configured to build uClibc with thumb, it uses a workaround
for that relies on interworking between arm and thumb instructions and does
not set the config file to enable compile in thumb mode.
This patch enables buildroot to configure and compile uClibc in thumb mode.
arch/Config.in.arm | 18 +++++++++---------
package/uclibc/uclibc.mk | 12 ++++++++++++
2 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/arch/Config.in.arm b/arch/Config.in.arm
index 67ff384..2d318f2 100644
--- a/arch/Config.in.arm
+++ b/arch/Config.in.arm
@@ -374,6 +374,15 @@ config BR2_ARM_INSTRUCTIONS_ARM
This option instructs the compiler to generate regular ARM
instructions, that are all 32 bits wide.
+config BR2_ARM_INSTRUCTIONS_THUMB2
+ bool "Thumb2"
+ depends on BR2_ARM_CPU_HAS_THUMB2
+ help
+ This option instructions the compiler to generate Thumb2
+ instructions, which allows to mix 16 bits instructions and
+ 32 bits instructions. This generally provides a much smaller
+ compiled binary size.
+
config BR2_ARM_INSTRUCTIONS_THUMB
bool "Thumb"
depends on BR2_ARM_CPU_HAS_THUMB
@@ -389,15 +398,6 @@ comment "Thumb1 is not compatible with VFP"
depends on BR2_ARM_CPU_HAS_THUMB
depends on !BR2_ARM_SOFT_FLOAT
-config BR2_ARM_INSTRUCTIONS_THUMB2
- bool "Thumb2"
- depends on BR2_ARM_CPU_HAS_THUMB2
- help
- This option instructions the compiler to generate Thumb2
- instructions, which allows to mix 16 bits instructions and
- 32 bits instructions. This generally provides a much smaller
- compiled binary size.
-
endchoice
config BR2_ARCH
diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk
index c62a40f..6685325 100644
--- a/package/uclibc/uclibc.mk
+++ b/package/uclibc/uclibc.mk
@@ -91,6 +91,17 @@ ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB)$(BR2_TOOLCHAIN_HAS_THREADS),yy)
UCLIBC_EXTRA_CFLAGS += -marm
endif
+ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB2),y)
+define UCLIBC_ARM_THUMB_CONFIG
+ $(call KCONFIG_ENABLE_OPT,COMPILE_IN_THUMB_MODE,$(@D)/.config)
+ $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_CONTEXT_FUNCS,$(@D)/.config)
+endef
+else
+define UCLIBC_ARM_THUMB_CONFIG
+ $(call KCONFIG_DISABLE_OPT,COMPILE_IN_THUMB_MODE,$(@D)/.config)
+endef
+endif
+
ifeq ($(BR2_UCLIBC_ARM_BX),y)
define UCLIBC_ARM_BX_CONFIG
$(call KCONFIG_ENABLE_OPT,USE_BX,$(@D)/.config)
@@ -373,6 +384,7 @@ define UCLIBC_KCONFIG_FIXUP_CMDS
$(UCLIBC_ARC_TYPE_CONFIG)
$(UCLIBC_ARC_PAGE_SIZE_CONFIG)
$(UCLIBC_ARM_ABI_CONFIG)
+ $(UCLIBC_ARM_THUMB_CONFIG)
$(UCLIBC_ARM_BX_CONFIG)
$(UCLIBC_MIPS_ABI_CONFIG)
$(UCLIBC_MIPS_ISA_CONFIG)
--
1.9.1
More information about the buildroot
mailing list