diff options
-rw-r--r-- | kconfig/arch-variant.kconfig | 4 | ||||
-rw-r--r-- | kconfig/arch.kconfig | 6 | ||||
-rw-r--r-- | kconfig/arch/arm/arm.kconfig | 21 | ||||
-rw-r--r-- | kconfig/arch/arm/fpu.kconfig | 132 |
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 |