summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2015-02-22 02:39:38 -0600
committerWaldemar Brodkorb <wbx@openadk.org>2015-02-22 02:39:38 -0600
commit476a87c63fe284faf4ea0a76f7b540845c5f6a52 (patch)
tree729a9ca60bb305018305e5ddffe407277264680e
parent64fe21734343ee2395ddb6586195d3db374f91ea (diff)
rework FPU/FLOAT support
NEON is only an extension not the FPU hardware. So handle this in a better way. Remove the lower case symbols.
-rw-r--r--target/arm/systems/raspberry-pi2
-rw-r--r--target/arm/systems/raspberry-pi23
-rw-r--r--target/arm/systems/solidrun-imx63
-rw-r--r--target/config/Config.in.arm.choice18
-rw-r--r--target/config/Config.in.cpu13
-rw-r--r--target/config/Config.in.float.choice2
-rw-r--r--target/config/Config.in.float.default11
-rw-r--r--target/config/Config.in.fpu.default21
-rw-r--r--target/config/Config.in.target21
-rw-r--r--target/linux/config/Config.in.kernel8
-rw-r--r--toolchain/gcc/Makefile8
11 files changed, 55 insertions, 55 deletions
diff --git a/target/arm/systems/raspberry-pi b/target/arm/systems/raspberry-pi
index 50cfb10e3..d6fd93baf 100644
--- a/target/arm/systems/raspberry-pi
+++ b/target/arm/systems/raspberry-pi
@@ -4,8 +4,6 @@ config ADK_TARGET_SYSTEM_RASPBERRY_PI
select ADK_little
select ADK_raspberry_pi
select ADK_CPU_ARM1176JZF_S
- select ADK_TARGET_CPU_WITH_FPU
- select ADK_TARGET_CPU_WITH_FPU_VFP
select ADK_TARGET_BOARD_BCM28XX
select ADK_TARGET_WITH_VGA
select ADK_TARGET_WITH_SERIAL
diff --git a/target/arm/systems/raspberry-pi2 b/target/arm/systems/raspberry-pi2
index 58efa4b93..93038cc11 100644
--- a/target/arm/systems/raspberry-pi2
+++ b/target/arm/systems/raspberry-pi2
@@ -4,9 +4,8 @@ config ADK_TARGET_SYSTEM_RASPBERRY_PI2
select ADK_little
select ADK_raspberry_pi2
select ADK_CPU_CORTEX_A7
+ select ADK_TARGET_CPU_WITH_NEON
select ADK_TARGET_BOARD_BCM28XX
- select ADK_TARGET_CPU_WITH_FPU
- select ADK_TARGET_CPU_WITH_FPU_NEON
select ADK_TARGET_WITH_VGA
select ADK_TARGET_WITH_SERIAL
select ADK_TARGET_WITH_CPU_FREQ
diff --git a/target/arm/systems/solidrun-imx6 b/target/arm/systems/solidrun-imx6
index f3228d703..a1964a60d 100644
--- a/target/arm/systems/solidrun-imx6
+++ b/target/arm/systems/solidrun-imx6
@@ -4,8 +4,7 @@ config ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
select ADK_little
select ADK_solidrun_imx6
select ADK_CPU_CORTEX_A9
- select ADK_TARGET_CPU_WITH_FPU
- select ADK_TARGET_CPU_WITH_FPU_NEON
+ select ADK_TARGET_CPU_WITH_NEON
select ADK_TARGET_WITH_VGA
select ADK_TARGET_WITH_SERIAL
select ADK_TARGET_WITH_CPU_FREQ
diff --git a/target/config/Config.in.arm.choice b/target/config/Config.in.arm.choice
index 0de8794db..3de588cc6 100644
--- a/target/config/Config.in.arm.choice
+++ b/target/config/Config.in.arm.choice
@@ -6,11 +6,21 @@ prompt "CPU architecture and family"
depends on ADK_TARGET_TOOLCHAIN && ADK_TARGET_ARCH_ARM
config ADK_CPU_ARMV7A_CORTEX_A9
- bool "cortex-a9 (armv7-a)"
+ bool "cortex-a9"
select ADK_CPU_CORTEX_A9
+config ADK_CPU_ARMV7A_CORTEX_A7
+ bool "cortex-a7"
+ select ADK_CPU_CORTEX_A7
+
+config ADK_CPU_ARMV7M_CORTEX_M4
+ bool "cortex-m4"
+ select ADK_CPU_CORTEX_M4
+ select ADK_TARGET_ARCH_ARM_WITH_THUMB
+ select ADK_TARGET_UCLINUX
+
config ADK_CPU_ARMV7M_CORTEX_M3
- bool "cortex-m3 (armv7-m)"
+ bool "cortex-m3"
select ADK_CPU_CORTEX_M3
select ADK_TARGET_ARCH_ARM_WITH_THUMB
select ADK_TARGET_UCLINUX
@@ -23,6 +33,10 @@ config ADK_CPU_ARMV5TE_ARM926EJ_S
bool "arm926ej-s (armv5te)"
select ADK_CPU_ARM926EJ_S
+config ADK_CPU_XSCALE
+ bool "xscale"
+ select ADK_CPU_XSCALE
+
endchoice
choice
diff --git a/target/config/Config.in.cpu b/target/config/Config.in.cpu
index fccb7da51..eb7628d0c 100644
--- a/target/config/Config.in.cpu
+++ b/target/config/Config.in.cpu
@@ -22,6 +22,7 @@ config ADK_CPU_ARM1176JZF_S
bool
select ADK_TARGET_WITH_NPTL
select ADK_TARGET_WITH_MMU
+ select ADK_TARGET_CPU_WITH_FPU_VFP
config ADK_CPU_ARM926EJ_S
bool
@@ -71,11 +72,13 @@ config ADK_CPU_CORTEX_A7
bool
select ADK_TARGET_WITH_NPTL
select ADK_TARGET_WITH_MMU
+ select ADK_TARGET_CPU_WITH_FPU_VFP4
config ADK_CPU_CORTEX_A9
bool
select ADK_TARGET_WITH_NPTL
select ADK_TARGET_WITH_MMU
+ select ADK_TARGET_CPU_WITH_FPU_VFP3
config ADK_CPU_CRIS_V10
bool
@@ -203,20 +206,19 @@ config ADK_TARGET_CPU_WITH_FPU
config ADK_TARGET_CPU_WITH_FPU_VFP
bool
+ select ADK_TARGET_CPU_WITH_FPU
select ADK_fpu_vfp
config ADK_TARGET_CPU_WITH_FPU_VFP3
bool
+ select ADK_TARGET_CPU_WITH_FPU
select ADK_fpu_vfp3
config ADK_TARGET_CPU_WITH_FPU_VFP4
bool
+ select ADK_TARGET_CPU_WITH_FPU
select ADK_fpu_vfp4
-config ADK_TARGET_CPU_WITH_FPU_NEON
- bool
- select ADK_fpu_neon
-
config ADK_TARGET_CPU_WITH_VT
bool
@@ -244,6 +246,9 @@ config ADK_TARGET_CPU_WITH_SSSE3
config ADK_TARGET_CPU_WITH_IWMMXT
bool
+config ADK_TARGET_CPU_WITH_NEON
+ bool
+
config ADK_TARGET_CPU_WITH_HT
bool
diff --git a/target/config/Config.in.float.choice b/target/config/Config.in.float.choice
index 1b5c34752..65ec89d4e 100644
--- a/target/config/Config.in.float.choice
+++ b/target/config/Config.in.float.choice
@@ -10,10 +10,8 @@ depends on (ADK_TARGET_ARCH_ARM || \
config ADK_TARGET_HARD_FLOAT
bool "hard-float"
- select ADK_hard_float
config ADK_TARGET_SOFT_FLOAT
bool "soft-float"
- select ADK_soft_float
endchoice
diff --git a/target/config/Config.in.float.default b/target/config/Config.in.float.default
index 087a79fff..886d85e5c 100644
--- a/target/config/Config.in.float.default
+++ b/target/config/Config.in.float.default
@@ -1,14 +1,7 @@
# This file is part of the OpenADK project. OpenADK is copyrighted
# material, please see the LICENCE file in the top-level directory.
-config ADK_soft_float
- bool
-
-config ADK_hard_float
- bool
-
config ADK_TARGET_FLOAT
string
- default "hard" if ADK_hard_float
- default "soft" if ADK_soft_float
-
+ default "hard" if ADK_TARGET_HARD_FLOAT
+ default "soft" if ADK_TARGET_SOFT_FLOAT
diff --git a/target/config/Config.in.fpu.default b/target/config/Config.in.fpu.default
index 095b2cb5f..0fd8f616c 100644
--- a/target/config/Config.in.fpu.default
+++ b/target/config/Config.in.fpu.default
@@ -1,23 +1,10 @@
# This file is part of the OpenADK project. OpenADK is copyrighted
# material, please see the LICENCE file in the top-level directory.
-config ADK_fpu_neon
- bool
-
-config ADK_fpu_vfp
- bool
-
-config ADK_fpu_vfp3
- bool
-
-config ADK_fpu_vfp4
- bool
-
config ADK_TARGET_FPU
string
depends on ADK_TARGET_ARCH_ARM
- default "vfp" if ADK_fpu_vfp
- default "vfp3" if ADK_fpu_vfp3
- default "vfp4" if ADK_fpu_vfp4
- default "neon" if ADK_fpu_neon
-
+ default "vfp" if ADK_TARGET_CPU_WITH_FPU_VFP
+ default "vfp3" if ADK_TARGET_CPU_WITH_FPU_VFP3
+ default "vfp4" if ADK_TARGET_CPU_WITH_FPU_VFP4
+ default "neon" if ADK_TARGET_CPU_WITH_NEON
diff --git a/target/config/Config.in.target b/target/config/Config.in.target
index 2245e511b..09c536afb 100644
--- a/target/config/Config.in.target
+++ b/target/config/Config.in.target
@@ -24,22 +24,17 @@ config ADK_TARGET_CFLAGS
default "-mcpu=v8" if ADK_CPU_SPARC_V8
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 && ADK_hard_float
- default "-march=mips32r2" if ADK_CPU_MIPS32R2 && ADK_hard_float
- default "-march=mips32 -msoft-float" if ADK_CPU_MIPS32 && ADK_soft_float
- default "-march=mips32r2 -msoft-float" if ADK_CPU_MIPS32R2 && ADK_soft_float
+ default "-march=mips32" if ADK_CPU_MIPS32
+ default "-march=mips32r2" if ADK_CPU_MIPS32R2
default "-march=mips64" if ADK_CPU_MIPS64
default "-march=armv8-a" if ADK_CPU_ARMV8
default "-march=armv5te -mtune=iwmmxt" if ADK_CPU_XSCALE
- default "-march=armv5te -mtune=arm926ej-s -mfloat-abi=soft" if ADK_CPU_ARM926EJ_S && ADK_soft_float
- 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 "-mcpu=cortex-m3 -mfloat-abi=soft" if ADK_CPU_CORTEX_M3 && ADK_soft_float
- default "-mcpu=cortex-a7 -mfloat-abi=soft" if ADK_CPU_CORTEX_A7 && ADK_soft_float
- default "-mcpu=cortex-a7 -mfpu=neon -mfloat-abi=hard" if ADK_CPU_CORTEX_A7 && ADK_hard_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 -mtune=arm926ej-s" if ADK_CPU_ARM926EJ_S
+ default "-march=armv6 -mtune=arm1176jzf-s" if ADK_CPU_ARM1176JZF_S
+ default "-mcpu=cortex-m3" if ADK_CPU_CORTEX_M3
+ default "-mcpu=cortex-m4" if ADK_CPU_CORTEX_M3
+ default "-mcpu=cortex-a7" if ADK_CPU_CORTEX_A7
+ default "-mcpu=cortex-a9" if ADK_CPU_CORTEX_A9
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/linux/config/Config.in.kernel b/target/linux/config/Config.in.kernel
index fc4ecb8d6..68dfae242 100644
--- a/target/linux/config/Config.in.kernel
+++ b/target/linux/config/Config.in.kernel
@@ -186,13 +186,17 @@ config ADK_KERNEL_VFPv3
bool
default y if ADK_TARGET_CPU_WITH_FPU_VFP3
+config ADK_KERNEL_VFPv4
+ bool
+ default y if ADK_TARGET_CPU_WITH_FPU_VFP4
+
config ADK_KERNEL_NEON
bool
- default y if ADK_TARGET_CPU_WITH_FPU_NEON
+ default y if ADK_TARGET_CPU_WITH_NEON
config ADK_KERNEL_MODE_NEON
bool
- default y if ADK_TARGET_CPU_WITH_FPU_NEON
+ default y if ADK_TARGET_CPU_WITH_NEON
config ADK_TARGET_NO_CMDLINE
bool "Do not builtin any kernel cmdline"
diff --git a/toolchain/gcc/Makefile b/toolchain/gcc/Makefile
index eecf59968..d6f7abd62 100644
--- a/toolchain/gcc/Makefile
+++ b/toolchain/gcc/Makefile
@@ -143,6 +143,10 @@ ifeq ($(ADK_CPU_CORTEX_M3),y)
GCC_CONFOPTS+= --with-cpu=cortex-m3 --with-mode=thumb
endif
+ifeq ($(ADK_CPU_CORTEX_M4),y)
+GCC_CONFOPTS+= --with-cpu=cortex-m4 --with-mode=thumb
+endif
+
ifeq ($(ADK_CPU_CORTEX_A7),y)
GCC_CONFOPTS+= --with-cpu=cortex-a7
endif
@@ -151,6 +155,10 @@ ifeq ($(ADK_CPU_CORTEX_A9),y)
GCC_CONFOPTS+= --with-cpu=cortex-a9
endif
+ifeq ($(ADK_CPU_XSCALE),y)
+GCC_CONFOPTS+= --with-cpu=xscale
+endif
+
ifeq ($(ADK_CPU_SPARC_V8),y)
GCC_CONFOPTS+= --with-cpu=v8
endif