From ec3f682d79a38b29ef51b7cdbc9fb9afbe2c9c63 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Wed, 22 Oct 2014 12:06:37 -0500 Subject: rework toolchain support for ARM. Use --with-cpu for gcc to have optimized code for requested ARM cpus. Add some basic support for cortex-m3. --- target/config/Config.in.arm.choice | 27 ++++++++++++++++----------- target/config/Config.in.arm.default | 15 --------------- target/config/Config.in.cpu | 3 +++ target/config/Config.in.qemu | 8 ++++++++ target/config/Config.in.target | 7 ++++--- target/config/Config.in.toolchain | 5 +++-- 6 files changed, 34 insertions(+), 31 deletions(-) (limited to 'target/config') diff --git a/target/config/Config.in.arm.choice b/target/config/Config.in.arm.choice index d732b5f7a..eaae2fe5e 100644 --- a/target/config/Config.in.arm.choice +++ b/target/config/Config.in.arm.choice @@ -2,21 +2,26 @@ # material, please see the LICENCE file in the top-level directory. choice ADK_TARGET_ARM_CPU_ARCH -prompt "CPU architecture" +prompt "CPU architecture and family" depends on ADK_TARGET_TOOLCHAIN && ADK_LINUX_ARM -default ADK_CPU_ARMV7A -config ADK_CPU_ARMV5TE - boolean "armv5te" - select ADK_armv5te +config ADK_CPU_ARMV7A_CORTEX_A9 + boolean "cortex-a9 (armv7-a)" + select ADK_CPU_CORTEX_A9 -config ADK_CPU_ARMV6 - boolean "armv6" - select ADK_armv6 +config ADK_CPU_ARMV7M_CORTEX_M3 + boolean "cortex-m3 (armv7-m)" + select ADK_CPU_CORTEX_M3 + select ADK_LINUX_ARM_WITH_THUMB + select ADK_TARGET_UCLINUX -config ADK_CPU_ARMV7A - boolean "armv7-a" - select ADK_armv7a +config ADK_CPU_ARMV6_ARM1176JZF_S + boolean "arm1176jzf-s (armv6)" + select ADK_CPU_ARM1176JZF_S + +config ADK_CPU_ARMV5TE_ARM926EJ_S + boolean "arm926ej-s (armv5te)" + select ADK_CPU_ARM926EJ_S endchoice diff --git a/target/config/Config.in.arm.default b/target/config/Config.in.arm.default index 50a05b674..3e6dac47b 100644 --- a/target/config/Config.in.arm.default +++ b/target/config/Config.in.arm.default @@ -1,21 +1,6 @@ # This file is part of the OpenADK project. OpenADK is copyrighted # material, please see the LICENCE file in the top-level directory. -config ADK_armv5te - boolean - -config ADK_armv6 - boolean - -config ADK_armv7a - boolean - -config ADK_TARGET_ARM_CPU - string - default "armv5te" if ADK_armv5te - default "armv6" if ADK_armv6 - default "armv7-a" if ADK_armv7a - config ADK_soft_float boolean diff --git a/target/config/Config.in.cpu b/target/config/Config.in.cpu index b8fb302cb..afb99ebc9 100644 --- a/target/config/Config.in.cpu +++ b/target/config/Config.in.cpu @@ -113,6 +113,9 @@ config ADK_CPU_ARM926EJ_S config ADK_CPU_ARM1176JZF_S boolean +config ADK_CPU_CORTEX_M3 + boolean + config ADK_CPU_CORTEX_A9 boolean diff --git a/target/config/Config.in.qemu b/target/config/Config.in.qemu index edffbc955..4f1ec85a4 100644 --- a/target/config/Config.in.qemu +++ b/target/config/Config.in.qemu @@ -56,6 +56,14 @@ config ADK_TARGET_QEMU_ARM_MODEL_VEXPRESS_A9 boolean "ARM Ltd. Versatile Express for Cortex-A9" select ADK_CPU_CORTEX_A9 +config ADK_TARGET_QEMU_ARM_MODEL_STELLARIS_M3 + boolean "Stellaris LM3S6965EVB" + select ADK_soft_float + select ADK_eabi + select ADK_CPU_CORTEX_M3 + select ADK_LINUX_ARM_WITH_THUMB + depends on ADK_TARGET_ARM_SOFT_FLOAT + config ADK_TARGET_QEMU_ARM_MODEL_VERSATILEPB boolean "ARM Ltd. Versatile/PB" select ADK_soft_float diff --git a/target/config/Config.in.target b/target/config/Config.in.target index 0415e0ce5..623874606 100644 --- a/target/config/Config.in.target +++ b/target/config/Config.in.target @@ -22,7 +22,7 @@ config ADK_TARGET_CFLAGS default "-march=atom" if ADK_CPU_ATOM default "-march=amdfam10" if ADK_CPU_AMDFAM10 default "-mcpu=v8" if ADK_CPU_SPARC_V8 - default "-m64 -mcpu=ultrasparc" if ADK_CPU_SPARC_V9 + default "-mcpu=ultrasparc -m64" if ADK_CPU_SPARC_V9 default "-march=loongson2f -Wa,-mfix-loongson2f-nop" if ADK_CPU_LOONGSON2F default "-march=mips32" if ADK_CPU_MIPS32 default "-march=mips64" if ADK_CPU_MIPS64 @@ -32,8 +32,9 @@ config ADK_TARGET_CFLAGS default "-march=armv5te -mtune=arm926ej-s -mfloat-abi=hard" if ADK_CPU_ARM926EJ_S && ADK_hard_float default "-march=armv6 -mtune=arm1176jzf-s -mfloat-abi=soft" if ADK_CPU_ARM1176JZF_S && ADK_soft_float default "-march=armv6 -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard" if ADK_CPU_ARM1176JZF_S && ADK_hard_float - default "-march=armv7-a -mtune=cortex-a9 -mfloat-abi=soft" if ADK_CPU_CORTEX_A9 && ADK_soft_float - default "-march=armv7-a -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard" if ADK_CPU_CORTEX_A9 && ADK_hard_float + default "-mcpu=cortex-m3 -mfloat-abi=soft" if ADK_CPU_CORTEX_M3 && ADK_soft_float + default "-mcpu=cortex-a9 -mfloat-abi=soft" if ADK_CPU_CORTEX_A9 && ADK_soft_float + default "-mcpu=cortex-a9 -mfpu=neon -mfloat-abi=hard" if ADK_CPU_CORTEX_A9 && ADK_hard_float default "-march=armv5te" if ADK_CPU_ARMV5TE default "-march=armv6" if ADK_CPU_ARMV6 default "-march=armv7-a" if ADK_CPU_ARMV7A diff --git a/target/config/Config.in.toolchain b/target/config/Config.in.toolchain index 16c075212..a5c91f0f7 100644 --- a/target/config/Config.in.toolchain +++ b/target/config/Config.in.toolchain @@ -130,11 +130,12 @@ config ADK_TARGET_CFLAGS_OPT_O0 endchoice config ADK_LINUX_ARM_WITH_THUMB - prompt "Use THUMB2 ARM mode" + prompt "Use THUMB2 only mode" boolean - depends on ADK_CPU_CORTEX_A9 && ADK_TARGET_LIB_GLIBC select ADK_KERNEL_THUMB2_KERNEL default n + help + Experimental option. Use with care. config ADK_TOOLCHAIN_WITH_SSP boolean -- cgit v1.2.3