Browse Source

add thumb2 support as an option for cubox-i

Waldemar Brodkorb 10 years ago
parent
commit
9bed26e23f
4 changed files with 29 additions and 4 deletions
  1. 11 2
      mk/vars.mk
  2. 13 0
      target/config/Config.in
  3. 3 0
      target/linux/config/Config.in.kernel
  4. 2 2
      toolchain/glibc/Makefile

+ 11 - 2
mk/vars.mk

@@ -72,15 +72,24 @@ TARGET_CC:=		${TARGET_COMPILER_PREFIX}gcc
 TARGET_CXX:=		${TARGET_COMPILER_PREFIX}g++
 TARGET_LD:=		${TARGET_COMPILER_PREFIX}ld
 
+MODE_FLAGS:=
+ifeq ($(ADK_LINUX_ARM),y)
+ifeq ($(ADK_LINUX_ARM_WITH_THUMB),y)
+MODE_FLAGS:=		-mthumb
+else
+MODE_FLAGS:=		-marm
+endif
+endif
+
 TARGET_CPPFLAGS:=	
 ifeq ($(ADK_LINUX_MICROBLAZE),y)
 TARGET_CFLAGS:=		$(TARGET_CFLAGS_ARCH) -fwrapv -fno-ident $(ADK_TARGET_ABI_CFLAGS)
 TARGET_CFLAGS_LIBC:=	$(TARGET_CFLAGS_ARCH) -fwrapv -fno-ident $(TARGET_OPTIMIZATION)
 else
-TARGET_CFLAGS:=		$(TARGET_CFLAGS_ARCH) -fwrapv -fno-ident -fhonour-copts $(ADK_TARGET_ABI_CFLAGS)
+TARGET_CFLAGS:=		$(TARGET_CFLAGS_ARCH) -fwrapv -fno-ident -fhonour-copts $(ADK_TARGET_ABI_CFLAGS) $(MODE_FLAGS)
 TARGET_CFLAGS_LIBC:=	$(TARGET_CFLAGS_ARCH) -fwrapv -fno-ident -fhonour-copts $(TARGET_OPTIMIZATION)
 endif
-TARGET_CXXFLAGS:=	$(TARGET_CFLAGS_ARCH) -fwrapv -fno-ident
+TARGET_CXXFLAGS:=	$(TARGET_CFLAGS_ARCH) -fwrapv -fno-ident $(MODE_FLAGS)
 TARGET_LDFLAGS:=	-L$(STAGING_TARGET_DIR)/lib -L$(STAGING_TARGET_DIR)/usr/lib \
 			-Wl,-O1 -Wl,-rpath -Wl,/usr/lib \
 			-Wl,-rpath-link -Wl,${STAGING_TARGET_DIR}/usr/lib \

+ 13 - 0
target/config/Config.in

@@ -172,6 +172,19 @@ config ADK_TARGET_KERNEL_MINICONFIG
 	default "raspberry-pi" if ADK_TARGET_SYSTEM_RASPBERRY_PI
 	default "cubox-i" if ADK_TARGET_SYSTEM_CUBOX_I
 
+choice
+prompt "Use ARM thumb mode"
+depends on ADK_TARGET_SYSTEM_CUBOX_I
+
+config ADK_LINUX_ARM_WITHOUT_THUMB
+	boolean "disabled"
+
+config ADK_LINUX_ARM_WITH_THUMB
+	boolean "enabled"
+	select ADK_KERNEL_THUMB2_KERNEL
+
+endchoice
+
 choice
 prompt "Qemu Emulation using VirtIO drivers"
 depends on ADK_TARGET_SYSTEM_QEMU_SPARC64

+ 3 - 0
target/linux/config/Config.in.kernel

@@ -101,3 +101,6 @@ config ADK_KERNEL_CPU_MIPS64_R1
 
 config ADK_KERNEL_PREEMPT
 	boolean
+
+config ADK_KERNEL_THUMB2_KERNEL
+	boolean

+ 2 - 2
toolchain/glibc/Makefile

@@ -5,13 +5,13 @@ include $(TOPDIR)/rules.mk
 include ../rules.mk
 
 # glibc does not compile with Os
-TARGET_CFLAGS_LIBC:= $(subst Os,O2,$(TARGET_CFLAGS))
+TARGET_CFLAGS_LIBC:= $(subst Os,O2,$(TARGET_CFLAGS_LIBC))
 ifneq ($(ADK_DEBUG),)
 TARGET_CFLAGS_LIBC+=	-O2
 endif
 
 # ssp partially supported
-TARGET_CFLAGS:=	$(filter-out -fstack-protector,$(TARGET_CFLAGS))
+TARGET_CFLAGS_LIBC:=	$(filter-out -fstack-protector,$(TARGET_CFLAGS_LIBC))
 
 include Makefile.inc
 include ${TOPDIR}/mk/buildhlp.mk