summaryrefslogtreecommitdiff
path: root/kconfig
diff options
context:
space:
mode:
authorAbdoulaye Walsimou Gaye <awg@embtoolkit.org>2012-03-25 20:58:01 +0200
committerAbdoulaye Walsimou Gaye <awg@embtoolkit.org>2012-03-25 20:58:01 +0200
commitc7890c34be5dd6b7a419b7ae5d2af37779681b54 (patch)
tree010782786c98e51bf097e1fe79cbd7897a19a7ae /kconfig
parent8c653af9e82704fe3bc5eb7ebfe2af2e7384adad (diff)
downloadembtoolkit-c7890c34be5dd6b7a419b7ae5d2af37779681b54.tar.gz
embtoolkit-c7890c34be5dd6b7a419b7ae5d2af37779681b54.tar.bz2
embtoolkit-c7890c34be5dd6b7a419b7ae5d2af37779681b54.tar.xz
Toolchain: ARM: Initial work to make FPU selectioin more configurable
Signed-off-by: Abdoulaye Walsimou Gaye <awg@embtoolkit.org>
Diffstat (limited to 'kconfig')
-rw-r--r--kconfig/arch-variant.kconfig4
-rw-r--r--kconfig/arch.kconfig6
-rw-r--r--kconfig/arch/arm/arm.kconfig21
-rw-r--r--kconfig/arch/arm/fpu.kconfig132
4 files changed, 163 insertions, 0 deletions
diff --git a/kconfig/arch-variant.kconfig b/kconfig/arch-variant.kconfig
index 6ece114..209ba52 100644
--- a/kconfig/arch-variant.kconfig
+++ b/kconfig/arch-variant.kconfig
@@ -45,8 +45,12 @@ config EMBTK_SOFTFLOAT
config EMBTK_HARDFLOAT
bool "Hard floating point"
+ depends on EMBTK_TARGET_ARCH_MAYUSE_FPU
select KEMBTK_UCLIBC_UCLIBC_HAS_FPU if EMBTK_CLIB_UCLIBC
help
Select if your CPU has a hardware floating point unit.
endchoice
+if EMBTK_ARCH_ARM && EMBTK_HARDFLOAT
+source kconfig/arch/arm/fpu.kconfig
+endif
diff --git a/kconfig/arch.kconfig b/kconfig/arch.kconfig
index 2d8d3ed..72783b4 100644
--- a/kconfig/arch.kconfig
+++ b/kconfig/arch.kconfig
@@ -34,6 +34,7 @@ choice
select EMBTK_32BITS_FS
config EMBTK_ARCH_MIPS
bool "MIPS"
+ select EMBTK_TARGET_ARCH_MAYUSE_FPU
# config EMBTK_ARCH_M68k
# bool "M68k (unsupported yet)"
# config EMBTK_ARCH_POWERPC
@@ -83,3 +84,8 @@ config EMBTK_TARGET_ARCH_BIG_ENDIAN
select KEMBTK_UCLIBC_ARCH_WANTS_BIG_ENDIAN if EMBTK_CLIB_UCLIBC
help
Big endian target
+
+config EMBTK_TARGET_ARCH_MAYUSE_FPU
+ bool
+ help
+ Selected if the arch may optionally use an fpu.
diff --git a/kconfig/arch/arm/arm.kconfig b/kconfig/arch/arm/arm.kconfig
index 3e5b29c..546f112 100644
--- a/kconfig/arch/arm/arm.kconfig
+++ b/kconfig/arch/arm/arm.kconfig
@@ -59,24 +59,45 @@ choice
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"
+ select EMBTK_TARGET_ARCH_MAYUSE_FPU
+ select EMBTK_ARCH_ARM_MAYUSE_FPU_ALL
+
config EMBTK_ARCH_ARM_FAMILY_ARM10E
bool "arm10e"
+ select EMBTK_TARGET_ARCH_MAYUSE_FPU
+ select EMBTK_ARCH_ARM_MAYUSE_FPU_ALL
+
config EMBTK_ARCH_ARM_FAMILY_XSCALE
bool "xscale"
+ select EMBTK_TARGET_ARCH_MAYUSE_FPU
+ select EMBTK_ARCH_ARM_MAYUSE_FPU_ALL
+
config EMBTK_ARCH_ARM_FAMILY_ARM11
bool "arm11"
+ select EMBTK_TARGET_ARCH_MAYUSE_FPU
+ select EMBTK_ARCH_ARM_MAYUSE_FPU_ALL
+
config EMBTK_ARCH_ARM_FAMILY_CORTEX
bool "cortex"
+ select EMBTK_TARGET_ARCH_MAYUSE_FPU
+ select EMBTK_ARCH_ARM_MAYUSE_FPU_ALL
+
config EMBTK_ARCH_ARM_FAMILY_IWMMXT
bool "iwmmxt"
+ select EMBTK_TARGET_ARCH_MAYUSE_FPU
+ select EMBTK_ARCH_ARM_MAYUSE_FPU_ALL
endchoice
choice
diff --git a/kconfig/arch/arm/fpu.kconfig b/kconfig/arch/arm/fpu.kconfig
new file mode 100644
index 0000000..ec12a8e
--- /dev/null
+++ b/kconfig/arch/arm/fpu.kconfig
@@ -0,0 +1,132 @@
+################################################################################
+# Embtoolkit
+# Copyright(C) 2012 Abdoulaye Walsimou GAYE.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that 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, see <http://www.gnu.org/licenses/>.
+#
+################################################################################
+#
+# \file fpu.kconfig
+# \brief fpu.kconfig of Embtoolkit
+# \author Abdoulaye Walsimou GAYE <awg@embtoolkit.org>
+# \date March 2012
+################################################################################
+
+config EMBTK_ARCH_ARM_MAYUSE_FPU_ALL
+ bool
+ select EMBTK_ARCH_ARM_MAYUSE_FPU_VFP
+ select EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV3
+ select EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV3_FP16
+ select EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV3_D16
+ select EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV3_D16FP16
+ select EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV3_XD
+ select EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV3_XDFP16
+ select EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV4
+ select EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV4_D16
+ select EMBTK_ARCH_ARM_MAYUSE_FPU_FPV4_SPD16
+ select EMBTK_ARCH_ARM_MAYUSE_FPU_NEON
+ select EMBTK_ARCH_ARM_MAYUSE_FPU_NEON_FP16
+ select EMBTK_ARCH_ARM_MAYUSE_FPU_NEON_VFPV4
+
+config EMBTK_ARCH_ARM_MAYUSE_FPU_VFP
+ bool
+config EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV3
+ bool
+config EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV3_FP16
+ bool
+config EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV3_D16
+ bool
+config EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV3_D16FP16
+ bool
+config EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV3_XD
+ bool
+config EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV3_XDFP16
+ bool
+config EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV4
+ bool
+config EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV4_D16
+ bool
+config EMBTK_ARCH_ARM_MAYUSE_FPU_FPV4_SPD16
+ bool
+config EMBTK_ARCH_ARM_MAYUSE_FPU_NEON
+ bool
+config EMBTK_ARCH_ARM_MAYUSE_FPU_NEON_FP16
+ bool
+config EMBTK_ARCH_ARM_MAYUSE_FPU_NEON_VFPV4
+ bool
+
+choice
+ prompt "FPU variant in the target"
+
+ config EMBTK_ARCH_ARM_FPU_VFP
+ bool "vfp"
+ depends on EMBTK_ARCH_ARM_MAYUSE_FPU_VFP
+
+ config EMBTK_ARCH_ARM_FPU_VFPV3
+ bool "vfpv3"
+ depends on EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV3
+
+ config EMBTK_ARCH_ARM_FPU_VFPV3_FP16
+ bool "vfpv3 FP16"
+ depends on EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV3_FP16
+# depends on EMBTK_GCC_VERSION_INT > 4400
+
+ config EMBTK_ARCH_ARM_FPU_VFPV3_D16
+ bool "vfpv3 D16"
+ depends on EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV3_D16
+
+ config EMBTK_ARCH_ARM_FPU_VFPV3_D16FP16
+ bool "vfpv3 D16/FP16"
+ depends on EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV3_D16FP16
+# depends on EMBTK_GCC_VERSION_INT > 4400
+
+ config EMBTK_ARCH_ARM_FPU_VFPV3_XD
+ bool "vfpv3 XD"
+ depends on EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV3_XD
+# depends on EMBTK_GCC_VERSION_INT > 4400
+
+ config EMBTK_ARCH_ARM_FPU_VFPV3_XDFP16
+ bool "vfpv3 XD/FP16"
+ depends on EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV3_XDFP16
+# depends on EMBTK_GCC_VERSION_INT > 4400
+
+ config EMBTK_ARCH_ARM_FPU_VFPV4
+ bool "vfpv4"
+ depends on EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV4
+# depends on EMBTK_GCC_VERSION_INT > 4400
+
+ config EMBTK_ARCH_ARM_FPU_VFPV4_D16
+ bool "vfpv4 D16"
+ depends on EMBTK_ARCH_ARM_MAYUSE_FPU_VFPV4_D16
+# depends on EMBTK_GCC_VERSION_INT > 4400
+
+ config EMBTK_ARCH_ARM_FPU_FPV4_SPD16
+ bool "fpv4 SP/D16"
+ depends on EMBTK_ARCH_ARM_MAYUSE_FPU_FPV4_SPD16
+# depends on EMBTK_GCC_VERSION_INT > 4400
+
+ config EMBTK_ARCH_ARM_FPU_NEON
+ bool "neon"
+ depends on EMBTK_ARCH_ARM_MAYUSE_FPU_NEON
+
+ config EMBTK_ARCH_ARM_FPU_NEON_FP16
+ bool "neon-fp16"
+ depends on EMBTK_ARCH_ARM_MAYUSE_FPU_NEON_FP16
+# depends on EMBTK_GCC_VERSION_INT > 4400
+
+ config EMBTK_ARCH_ARM_FPU_NEON_VFPV4
+ bool "neon-vfpv4"
+ depends on EMBTK_ARCH_ARM_MAYUSE_FPU_NEON_VFPV4
+# depends on EMBTK_GCC_VERSION_INT > 4400
+endchoice