summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbdoulaye Walsimou Gaye <walsimou@walsimou.com>2009-07-04 01:14:44 +0200
committerAbdoulaye Walsimou Gaye <walsimou@walsimou.com>2009-07-04 01:15:58 +0200
commitc5e84614ee8eca242af7806fcc0072958021280d (patch)
tree5644562166b782a163b3fd9982a902cd7c99eab4
parent339cb0b974e33db231f32d522f00dc0ff618036d (diff)
downloadembtoolkit-c5e84614ee8eca242af7806fcc0072958021280d.tar.gz
embtoolkit-c5e84614ee8eca242af7806fcc0072958021280d.tar.bz2
embtoolkit-c5e84614ee8eca242af7806fcc0072958021280d.tar.xz
Toolchain: Add ARM arch support
Signed-off-by: Abdoulaye Walsimou Gaye <walsimou@walsimou.com>
-rw-r--r--kconfig/arch-variant.kconfig255
-rw-r--r--kconfig/arch.kconfig1
-rw-r--r--mk/arm-arch.mk57
-rw-r--r--mk/target-mcu.mk1
4 files changed, 309 insertions, 5 deletions
diff --git a/kconfig/arch-variant.kconfig b/kconfig/arch-variant.kconfig
index ebeea3b..6f4f878 100644
--- a/kconfig/arch-variant.kconfig
+++ b/kconfig/arch-variant.kconfig
@@ -1,4 +1,4 @@
-#########################################################################################
+################################################################################
# GAYE Abdoulaye Walsimou, <walsimou@walsimou.com>
# Copyright(C) 2009 GAYE Abdoulaye Walsimou. All rights reserved.
#
@@ -14,16 +14,16 @@
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
-#########################################################################################
+################################################################################
#
# \file arch-variant.kconfig
# \brief arch-variant.kconfig of EmbToolkit, here we give users the ability to
# \brief choose which variant of CPU to use.
# \author GAYE Abdoulaye Walsimou, <walsimou@walsimou.com>
# \date May 2009
-#########################################################################################
+################################################################################
-################################## MIPS ARCH ############################################
+################################## MIPS ARCH ###################################
choice
prompt "Architecture variant"
depends on EMBTK_ARCH_MIPS
@@ -104,7 +104,252 @@ choice
bool "n64" if EMBTK_TARGET_ARCH_64BITS
endchoice
-################################## End MIPS ARCH ########################################
+################################## End MIPS ARCH ###############################
+
+################################## ARM ARCH ####################################
+choice
+ prompt "ARM Endian"
+ depends on EMBTK_ARCH_ARM
+ help
+ Select your ARM MCU endian
+
+ config EMBTK_ARCH_ARM_LITTLE_ENDIAN
+ bool "armel: Little endian"
+ help
+ Your ARM MCU is little endian
+ config EMBTK_ARCH_ARM_BIG_ENDIAN
+ bool "armeb: Big endian"
+ help
+ Your ARM MCU is big endian
+endchoice
+
+choice
+ prompt "ARM ABI to use"
+ depends on EMBTK_ARCH_ARM
+ help
+ Select ARM abi to use.
+
+ config EMBTK_ARCH_ARM_ABI_EABI
+ bool "eabi"
+endchoice
+
+choice
+ prompt "ARM Family"
+ depends on EMBTK_ARCH_ARM
+ help
+ Select ARM MCU family you want to use.
+
+ config EMBTK_ARCH_ARM_FAMILY_ARM7TDMI
+ bool "arm7tdmi"
+ config EMBTK_ARCH_ARM_FAMILY_STRONGARM
+ bool "StrongARM"
+ config EMBTK_ARCH_ARM_FAMILY_ARM8
+ bool "arm8"
+ config EMBTK_ARCH_ARM_FAMILY_ARM9TDMI
+ bool "arm9tdmi"
+ config EMBTK_ARCH_ARM_FAMILY_ARM9E
+ bool "arm9e"
+ config EMBTK_ARCH_ARM_FAMILY_ARM10E
+ bool "arm10e"
+ config EMBTK_ARCH_ARM_FAMILY_XSCALE
+ bool "xscale"
+ config EMBTK_ARCH_ARM_FAMILY_ARM11
+ bool "arm11"
+ config EMBTK_ARCH_ARM_FAMILY_CORTEX
+ bool "cortex"
+ config EMBTK_ARCH_ARM_FAMILY_IWMMXT
+ bool "iwmmxt"
+endchoice
+
+choice
+ prompt "ARM MCU"
+ depends on EMBTK_ARCH_ARM
+
+#### arm7tdmi MCU Family ####
+ config EMBTK_ARCH_ARM_FAMILY_ARM7TDMI_ARM7TDMI
+ depends on EMBTK_ARCH_ARM_FAMILY_ARM7TDMI
+ bool "arm7tdmi"
+ config EMBTK_ARCH_ARM_FAMILY_ARM7TDMI_ARM7TDMI-S
+ depends on EMBTK_ARCH_ARM_FAMILY_ARM7TDMI
+ bool "arm7tdmi-s"
+ config EMBTK_ARCH_ARM_FAMILY_ARM7TDMI_ARM710T
+ depends on EMBTK_ARCH_ARM_FAMILY_ARM7TDMI
+ bool "arm710t"
+ config EMBTK_ARCH_ARM_FAMILY_ARM7TDMI_ARM720T
+ depends on EMBTK_ARCH_ARM_FAMILY_ARM7TDMI
+ bool "arm720t"
+ config EMBTK_ARCH_ARM_FAMILY_ARM7TDMI_ARM740T
+ depends on EMBTK_ARCH_ARM_FAMILY_ARM7TDMI
+ bool "arm740t"
+# config EMBTK_ARCH_ARM_FAMILY_ARM7TDMI_ARM7EJ-S
+# depends on EMBTK_ARCH_ARM_FAMILY_ARM7TDMI
+# bool "arm7ej-s"
+
+#### StrongARM MCU Family ####
+ config EMBTK_ARCH_ARM_FAMILY_STRONGARM_SA
+ depends on EMBTK_ARCH_ARM_FAMILY_STRONGARM
+ bool "strongarm"
+ config EMBTK_ARCH_ARM_FAMILY_STRONGARM_SA-110
+ depends on EMBTK_ARCH_ARM_FAMILY_STRONGARM
+ bool "strongarm110"
+ config EMBTK_ARCH_ARM_FAMILY_STRONGARM_SA-1100
+ depends on EMBTK_ARCH_ARM_FAMILY_STRONGARM
+ bool "strongarm1100"
+ config EMBTK_ARCH_ARM_FAMILY_STRONGARM_SA-1110
+ depends on EMBTK_ARCH_ARM_FAMILY_STRONGARM
+ bool "strongarm1110"
+
+#### ARM8 MCU Family ####
+ config EMBTK_ARCH_ARM_FAMILY_ARM8_ARM810
+ depends on EMBTK_ARCH_ARM_FAMILY_ARM8
+ bool "arm810"
+
+#### ARM9TDMI MCU Family ####
+ config EMBTK_ARCH_ARM_FAMILY_ARM9TDMI_ARM9TDMI
+ depends on EMBTK_ARCH_ARM_FAMILY_ARM9TDMI
+ bool "arm9tdmi"
+ config EMBTK_ARCH_ARM_FAMILY_ARM9TDMI_ARM920T
+ depends on EMBTK_ARCH_ARM_FAMILY_ARM9TDMI
+ bool "arm920t"
+ config EMBTK_ARCH_ARM_FAMILY_ARM9TDMI_ARM922T
+ depends on EMBTK_ARCH_ARM_FAMILY_ARM9TDMI
+ bool "arm922t"
+ config EMBTK_ARCH_ARM_FAMILY_ARM9TDMI_ARM940T
+ depends on EMBTK_ARCH_ARM_FAMILY_ARM9TDMI
+ bool "arm940t"
+
+#### ARM9E MCU Family ####
+ config EMBTK_ARCH_ARM_FAMILY_ARM9E_ARM946E-S
+ depends on EMBTK_ARCH_ARM_FAMILY_ARM9E
+ bool "arm946e-s"
+ config EMBTK_ARCH_ARM_FAMILY_ARM9E_ARM966E-S
+ depends on EMBTK_ARCH_ARM_FAMILY_ARM9E
+ bool "arm966e-s"
+ config EMBTK_ARCH_ARM_FAMILY_ARM9E_ARM968E-S
+ depends on EMBTK_ARCH_ARM_FAMILY_ARM9E
+ bool "arm968e-s"
+ config EMBTK_ARCH_ARM_FAMILY_ARM9E_ARM926EJ-S
+ depends on EMBTK_ARCH_ARM_FAMILY_ARM9E
+ bool "arm926ej-s"
+# config EMBTK_ARCH_ARM_FAMILY_ARM9E_ARM996HS
+# depends on EMBTK_ARCH_ARM_FAMILY_ARM9E
+# bool "arm996hs"
+
+#### ARM10E MCU Family ####
+ config EMBTK_ARCH_ARM_FAMILY_ARM10E_ARM1020E
+ depends on EMBTK_ARCH_ARM_FAMILY_ARM10E
+ bool "arm1020e"
+ config EMBTK_ARCH_ARM_FAMILY_ARM10E_ARM1022E
+ depends on EMBTK_ARCH_ARM_FAMILY_ARM10E
+ bool "arm1022e"
+ config EMBTK_ARCH_ARM_FAMILY_ARM10E_ARM1026EJ-S
+ depends on EMBTK_ARCH_ARM_FAMILY_ARM10E
+ bool "arm1026ej-s"
+
+#### XSCALE MCU Family ####
+ config EMBTK_ARCH_ARM_FAMILY_XSCALE_XSCALE
+ depends on EMBTK_ARCH_ARM_FAMILY_XSCALE
+ bool "xscale"
+
+#### ARM11 MCU Family ####
+ config EMBTK_ARCH_ARM_FAMILY_ARM11_ARM1136J-S
+ depends on EMBTK_ARCH_ARM_FAMILY_ARM11
+ bool "arm1136j-s"
+ config EMBTK_ARCH_ARM_FAMILY_ARM11_ARM1136JF-S
+ depends on EMBTK_ARCH_ARM_FAMILY_ARM11
+ bool "arm1136jf-s"
+ config EMBTK_ARCH_ARM_FAMILY_ARM11_ARM1156T2-S
+ depends on EMBTK_ARCH_ARM_FAMILY_ARM11
+ bool "arm1156t2-s"
+# config EMBTK_ARCH_ARM_FAMILY_ARM11_ARM1156T2F-S
+# depends on EMBTK_ARCH_ARM_FAMILY_ARM11
+# bool "arm1156t2f-s"
+ config EMBTK_ARCH_ARM_FAMILY_ARM11_ARM1176JZ-S
+ depends on EMBTK_ARCH_ARM_FAMILY_ARM11
+ bool "arm1176jz-s"
+ config EMBTK_ARCH_ARM_FAMILY_ARM11_ARM1176JZF-S
+ depends on EMBTK_ARCH_ARM_FAMILY_ARM11
+ bool "arm1176jzf-s"
+ config EMBTK_ARCH_ARM_FAMILY_ARM11_MPCORE
+ depends on EMBTK_ARCH_ARM_FAMILY_ARM11
+ bool "mpcore"
+
+#### CORTEX MCU Family ####
+ config EMBTK_ARCH_ARM_FAMILY_CORTEX_CORTEX-A8
+ depends on EMBTK_ARCH_ARM_FAMILY_CORTEX
+ bool "cortex-a8"
+ config EMBTK_ARCH_ARM_FAMILY_CORTEX_CORTEX-A9
+ depends on EMBTK_ARCH_ARM_FAMILY_CORTEX
+ bool "cortex-a9"
+# config EMBTK_ARCH_ARM_FAMILY_CORTEX_CORTEX-A9_MPCORE
+# depends on EMBTK_ARCH_ARM_FAMILY_CORTEX
+# bool "cortex-a9 mpcore"
+ config EMBTK_ARCH_ARM_FAMILY_CORTEX_CORTEX-R4
+ depends on EMBTK_ARCH_ARM_FAMILY_CORTEX
+ bool "cortex-r4"
+ config EMBTK_ARCH_ARM_FAMILY_CORTEX_CORTEX-R4F
+ depends on EMBTK_ARCH_ARM_FAMILY_CORTEX
+ bool "cortex-r4f"
+ config EMBTK_ARCH_ARM_FAMILY_CORTEX_CORTEX-M3
+ depends on EMBTK_ARCH_ARM_FAMILY_CORTEX
+ bool "cortex-m3"
+# config EMBTK_ARCH_ARM_FAMILY_CORTEX_CORTEX-M0
+# depends on EMBTK_ARCH_ARM_FAMILY_CORTEX
+# bool "cortex-m0"
+ config EMBTK_ARCH_ARM_FAMILY_CORTEX_CORTEX-M1
+ depends on EMBTK_ARCH_ARM_FAMILY_CORTEX
+ bool "cortex-m1"
+
+#### IWMMXT MCU Family ####
+ config EMBTK_ARCH_ARM_FAMILY_IWMMXT_IWMMXT
+ depends on EMBTK_ARCH_ARM_FAMILY_IWMMXT
+ bool "iwmmxt"
+ config EMBTK_ARCH_ARM_FAMILY_IWMMXT_IWMMXT2
+ depends on EMBTK_ARCH_ARM_FAMILY_IWMMXT
+ bool "iwmmxt2"
+endchoice
+
+config EMBTK_ARM_MCU_STRING
+ depends on EMBTK_ARCH_ARM
+ string
+ default "arm7tdmi" if EMBTK_ARCH_ARM_FAMILY_ARM7TDMI_ARM7TDMI
+ default "arm7tdmi-s" if EMBTK_ARCH_ARM_FAMILY_ARM7TDMI_ARM7TDMI-S
+ default "arm710t" if EMBTK_ARCH_ARM_FAMILY_ARM7TDMI_ARM710T
+ default "arm720t" if EMBTK_ARCH_ARM_FAMILY_ARM7TDMI_ARM720T
+ default "arm740t" if EMBTK_ARCH_ARM_FAMILY_ARM7TDMI_ARM740T
+ default "strongarm" if EMBTK_ARCH_ARM_FAMILY_STRONGARM_SA
+ default "strongarm110" if EMBTK_ARCH_ARM_FAMILY_STRONGARM_SA-110
+ default "strongarm1100" if EMBTK_ARCH_ARM_FAMILY_STRONGARM_SA-1100
+ default "strongarm1110" if EMBTK_ARCH_ARM_FAMILY_STRONGARM_SA-1110
+ default "arm810" if EMBTK_ARCH_ARM_FAMILY_ARM8_ARM810
+ default "arm9tdmi" if EMBTK_ARCH_ARM_FAMILY_ARM9TDMI_ARM9TDMI
+ default "arm920t" if EMBTK_ARCH_ARM_FAMILY_ARM9TDMI_ARM920T
+ default "arm922t" if EMBTK_ARCH_ARM_FAMILY_ARM9TDMI_ARM922T
+ default "arm940t" if EMBTK_ARCH_ARM_FAMILY_ARM9TDMI_ARM940T
+ default "arm946e-s" if EMBTK_ARCH_ARM_FAMILY_ARM9E_ARM946E-S
+ default "arm966e-s" if EMBTK_ARCH_ARM_FAMILY_ARM9E_ARM966E-S
+ default "arm968e-s" if EMBTK_ARCH_ARM_FAMILY_ARM9E_ARM968E-S
+ default "arm926ej-s" if EMBTK_ARCH_ARM_FAMILY_ARM9E_ARM926EJ-S
+ default "arm1020e" if EMBTK_ARCH_ARM_FAMILY_ARM10E_ARM1020E
+ default "arm1022e" if EMBTK_ARCH_ARM_FAMILY_ARM10E_ARM1022E
+ default "arm1026ej-s" if EMBTK_ARCH_ARM_FAMILY_ARM10E_ARM1026EJ-S
+ default "xscale" if EMBTK_ARCH_ARM_FAMILY_XSCALE_XSCALE
+ default "arm1136j-s" if EMBTK_ARCH_ARM_FAMILY_ARM11_ARM1136J-S
+ default "arm1136jf-s" if EMBTK_ARCH_ARM_FAMILY_ARM11_ARM1136JF-S
+ default "arm1156t2-s" if EMBTK_ARCH_ARM_FAMILY_ARM11_ARM1156T2-S
+ default "arm1176jz-s" if EMBTK_ARCH_ARM_FAMILY_ARM11_ARM1176JZ-S
+ default "arm1176jzf-s" if EMBTK_ARCH_ARM_FAMILY_ARM11_ARM1176JZF-S
+ default "mpcore" if EMBTK_ARCH_ARM_FAMILY_ARM11_MPCORE
+ default "cortex-a8" if EMBTK_ARCH_ARM_FAMILY_CORTEX_CORTEX-A8
+ default "cortex-a9" if EMBTK_ARCH_ARM_FAMILY_CORTEX_CORTEX-A9
+ default "cortex-r4" if EMBTK_ARCH_ARM_FAMILY_CORTEX_CORTEX-R4
+ default "cortex-r4f" if EMBTK_ARCH_ARM_FAMILY_CORTEX_CORTEX-R4F
+ default "cortex-m3" if EMBTK_ARCH_ARM_FAMILY_CORTEX_CORTEX-M3
+ default "cortex-m1" if EMBTK_ARCH_ARM_FAMILY_CORTEX_CORTEX-M1
+ default "iwmmxt" if EMBTK_ARCH_ARM_FAMILY_IWMMXT_IWMMXT
+ default "iwmmxt2" if EMBTK_ARCH_ARM_FAMILY_IWMMXT_IWMMXT2
+
+################################## End ARM ARCH ################################
config EMBTK_TOOLCHAIN_MULTILIB
default n
diff --git a/kconfig/arch.kconfig b/kconfig/arch.kconfig
index a8fc751..1a8f42c 100644
--- a/kconfig/arch.kconfig
+++ b/kconfig/arch.kconfig
@@ -30,6 +30,7 @@ choice
Select the architecture you wish.
config EMBTK_ARCH_ARM
bool "ARM"
+ select EMBTK_TARGET_ARCH_32BITS
config EMBTK_ARCH_MIPS
bool "MIPS"
config EMBTK_ARCH_M68k
diff --git a/mk/arm-arch.mk b/mk/arm-arch.mk
new file mode 100644
index 0000000..b57dacb
--- /dev/null
+++ b/mk/arm-arch.mk
@@ -0,0 +1,57 @@
+################################################################################
+# GAYE Abdoulaye Walsimou, <walsimou@walsimou.com>
+# Copyright(C) 2009 GAYE Abdoulaye Walsimou. All rights reserved.
+#
+# This program is free software; you can distribute it and/or modify it
+# under the terms of the GNU General Public License
+# (Version 2 or later) published by the Free Software Foundation.
+#
+# This program is distributed in the hope it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
+################################################################################
+#
+# \file arm-arch.mk
+# \brief arm-arch.mk of Embtoolkit
+# \author GAYE Abdoulaye Walsimou, <walsimou@walsimou.com>
+# \date June 2009
+################################################################################
+
+ifeq ($(CONFIG_EMBTK_ARCH_ARM),y)
+LINUX_ARCH := arm
+GNU_TARGET_ARCH := arm
+
+ifeq ($(CONFIG_EMBTK_ARCH_ARM_BIG_ENDIAN),y)
+GNU_TARGET := armeb-linux
+STRICT_GNU_TARGET := armeb-unknown-linux-gnueabi
+else
+GNU_TARGET := armel-linux
+STRICT_GNU_TARGET := armel-unknown-linux-gnueabi
+endif
+
+#GCC configure options
+GCC_WITH_CPU := --with-cpu=$(subst ",,$(strip $(CONFIG_EMBTK_ARM_MCU_STRING)))
+
+#Hard or soft floating point for GCC
+ifeq ($(CONFIG_EMBTK_SOFTFLOAT),y)
+GCC_WITH_FLOAT := --with-float=soft
+else
+GCC_WITH_FLOAT := --with-float=hard
+endif
+
+#Hard or soft floating point for eglibc
+ifeq ($(CONFIG_EMBTK_SOFTFLOAT),y)
+EGLIBC_FLOAT_TYPE := --with-fp=no
+EMBTK_TARGET_FLOAT_CFLAGS := -mfloat-abi=soft
+else
+EGLIBC_FLOAT_TYPE := --with-fp=yes
+EMBTK_TARGET_FLOAT_CFLAGS := -mfloat-abi=hard
+endif
+
+endif
+
diff --git a/mk/target-mcu.mk b/mk/target-mcu.mk
index 559b6a0..5efb15d 100644
--- a/mk/target-mcu.mk
+++ b/mk/target-mcu.mk
@@ -24,6 +24,7 @@
#########################################################################################
#ARM
+include $(EMBTK_ROOT)/mk/arm-arch.mk
#M68K