aboutsummaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/arch/sh.in41
-rw-r--r--config/target.in126
2 files changed, 161 insertions, 6 deletions
diff --git a/config/arch/sh.in b/config/arch/sh.in
index ff2ec142..8ebdd744 100644
--- a/config/arch/sh.in
+++ b/config/arch/sh.in
@@ -3,8 +3,6 @@
## no-package
## select ARCH_SUPPORTS_32
## select ARCH_DEFAULT_32
-## select ARCH_SUPPORTS_BOTH_MMU
-## select ARCH_DEFAULT_HAS_MMU
## select ARCH_SUPPORTS_FLAT_FORMAT
## select ARCH_SUPPORTS_EITHER_ENDIAN
## select ARCH_DEFAULT_LE
@@ -21,6 +19,8 @@ choice
# GCC supports both endiannesses even if a specific CPU is selected (so long
# as that CPU can be both BE/LE), but the binutils (or specifically, ld)
# configures for both endiannesses only if sh-*-linux target is selected.
+# --with-cpu can be used to set the mmu and precision options,
+# so dont include the options aswell
config ARCH_SH_SH
bool
prompt "unspecified"
@@ -62,16 +62,45 @@ config ARCH_SH_SH4A
bool
prompt "sh4a"
+config ARCH_SH_SH4AL
+ bool
+ prompt "sh4al"
+
endchoice
config ARCH_SH_VARIANT
string
- default "sh" if ARCH_SH_SH
+ default "sh" if ARCH_SH_SH
default "sh1" if ARCH_SH_SH1
default "sh2" if ARCH_SH_SH2
- default "sh2e" if ARCH_SH_SH2E
- default "sh2a" if ARCH_SH_SH2A
+ default "sh2e" if ARCH_SH_SH2E
+ default "sh2a" if ARCH_SH_SH2A
default "sh3" if ARCH_SH_SH3
- default "sh3e" if ARCH_SH_SH3E
+ default "sh3e" if ARCH_SH_SH3E
default "sh4" if ARCH_SH_SH4
default "sh4a" if ARCH_SH_SH4A
+ default "sh4al" if ARCH_SH_SH4AL
+
+config ARCH_SH_ENABLE_FPU_OPTIONS
+ bool
+ default y if ARCH_SH_SH2A
+ default y if ARCH_SH_SH4
+ default y if ARCH_SH_SH4A
+ select ARCH_SUPPORTS_BOTH_MMU
+ select ARCH_DEFAULT_HAS_MMU
+
+config ARCH_SH_ENABLE_PRECISION_OPTIONS
+ bool
+ default y if ARCH_USE_MMU
+ select ARCH_SUPPORTS_WITH_FLOATING_PRECISION
+ select ARCH_SUPPORTS_PRECISION_UNSPECIFIED
+ select ARCH_SUPPORTS_PRECISION_SINGLE_ONLY
+ select ARCH_SUPPORTS_PRECISION_SINGLE_WITH_DOUBLE
+ select ARCH_DEFAULT_PRECISION_UNSPECIFIED
+
+config ARCH_SH_FLOAT_SUFFIX
+ string
+ default "" if !ARCH_SH_ENABLE_FPU_OPTIONS
+ default "_nofpu" if !ARCH_USE_MMU
+ default "_single" if ARCH_FLOATING_PRECISION_SINGLE_WITH_DOUBLE
+ default "_single_only" if ARCH_FLOATING_PRECISION_SINGLE_ONLY
diff --git a/config/target.in b/config/target.in
index 21302622..ed415394 100644
--- a/config/target.in
+++ b/config/target.in
@@ -434,6 +434,132 @@ config ARCH_FLOAT_SW
endchoice
+#--------------------------------------
+
+config ARCH_SUPPORTS_WITH_FLOATING_PRECISION
+ bool
+
+config ARCH_SUPPORTS_PRECISION_AUTO
+ bool
+
+config ARCH_SUPPORTS_PRECISION_SINGLE_ONLY
+ bool
+
+config ARCH_SUPPORTS_PRECISION_DOUBLE_ONLY
+ bool
+
+config ARCH_SUPPORTS_PRECISION_BOTH
+ bool
+
+config ARCH_SUPPORTS_PRECISION_SINGLE_WITH_DOUBLE
+ bool
+
+config ARCH_SUPPORTS_PRECISION_DOUBLE_WITH_SINGLE
+ bool
+
+config ARCH_SUPPORTS_PRECISION_UNSPECIFIED
+ bool
+
+config ARCH_DEFAULT_PRECISION_AUTO
+ bool
+
+config ARCH_DEFAULT_PRECISION_SINGLE_ONLY
+ bool
+
+config ARCH_DEFAULT_PRECISION_DOUBLE_ONLY
+ bool
+
+config ARCH_DEFAULT_PRECISION_BOTH
+ bool
+
+config ARCH_DEFAULT_PRECISION_SINGLE_WITH_DOUBLE
+ bool
+
+config ARCH_DEFAULT_PRECISION_DOUBLE_WITH_SINGLE
+ bool
+
+config ARCH_DEFAULT_PRECISION_UNSPECIFIED
+ bool
+
+choice
+ bool
+ prompt "Floating point precision:"
+ depends on ARCH_SUPPORTS_WITH_FLOATING_PRECISION
+ default ARCH_FLOATING_PRECISION_AUTO if ARCH_DEFAULT_PRECISION_AUTO
+ default ARCH_FLOATING_PRECISION_SINGLE_ONLY if ARCH_DEFAULT_PRECISION_SINGLE_ONLY
+ default ARCH_FLOATING_PRECISION_DOUBLE_ONLY if ARCH_DEFAULT_PRECISION_DOUBLE_ONLY
+ default ARCH_FLOATING_PRECISION_BOTH if ARCH_DEFAULT_PRECISION_BOTH
+ default ARCH_FLOATING_PRECISION_SINGLE_WITH_DOUBLE if ARCH_DEFAULT_PRECISION_SINGLE_WITH_DOUBLE
+ default ARCH_FLOATING_PRECISION_DOUBLE_WITH_SINGLE if ARCH_DEFAULT_PRECISION_DOUBLE_WITH_SINGLE
+ default ARCH_FLOATING_PRECISION_UNSPECIFIED if ARCH_DEFAULT_PRECISION_UNSPECIFIED
+
+config ARCH_FLOATING_PRECISION_AUTO
+ bool
+ prompt "auto (let gcc decide)"
+ depends on ARCH_SUPPORTS_PRECISION_AUTO
+ help
+ Instead of explicitly passing a float precision option, don't
+ pass any float precision options and let gcc figure it out.
+
+config ARCH_FLOATING_PRECISION_SINGLE_ONLY
+ bool
+ prompt "single (32-bit)"
+ depends on ARCH_SUPPORTS_PRECISION_SINGLE_ONLY
+ help
+ Use single precision floating point operations.
+
+config ARCH_FLOATING_PRECISION_DOUBLE_ONLY
+ bool
+ prompt "double (64-bit)"
+ depends on ARCH_SUPPORTS_PRECISION_DOUBLE_ONLY
+ help
+ Use double precision floating point operations.
+
+config ARCH_FLOATING_PRECISION_BOTH
+ bool
+ prompt "single and double (32-bit and 64-bit)"
+ depends on ARCH_SUPPORTS_PRECISION_BOTH
+ help
+ Use both single and double precision floating point operations.
+
+config ARCH_FLOATING_PRECISION_SINGLE_WITH_DOUBLE
+ bool
+ prompt "single with double (32-bit with 64-bit)"
+ depends on ARCH_SUPPORTS_PRECISION_SINGLE_WITH_DOUBLE
+ help
+ Use single precision floating point operations, but allow double
+ precision floating point operations when needed.
+
+config ARCH_FLOATING_PRECISION_DOUBLE_WITH_SINGLE
+ bool
+ prompt "double with single (64-bit with 32-bit)"
+ depends on ARCH_SUPPORTS_PRECISION_DOUBLE_WITH_SINGLE
+ help
+ Use double precision floating point operations, but allow single
+ precision floating point operations when needed.
+
+config ARCH_FLOATING_PRECISION_UNSPECIFIED
+ bool
+ prompt "default (leave unspecified)"
+ depends on ARCH_SUPPORTS_PRECISION_UNSPECIFIED
+ help
+ Use the default floating point precision for the architecture.
+
+endchoice
+
+config ARCH_FLOATING_PRECISION
+ string
+ depends on ARCH_SUPPORTS_WITH_FLOATING_PRECISION
+ default "auto" if ARCH_FLOATING_PRECISION_AUTO
+ default "single" if ARCH_FLOATING_PRECISION_SINGLE_ONLY
+ default "double" if ARCH_FLOATING_PRECISION_DOUBLE_ONLY
+ default "both" if ARCH_FLOATING_PRECISION_BOTH
+ default "single,double" if ARCH_FLOATING_PRECISION_SINGLE_WITH_DOUBLE
+ default "double,single" if ARCH_FLOATING_PRECISION_DOUBLE_WITH_SINGLE
+ default "" if ARCH_FLOATING_PRECISION_UNSPECIFIED
+
+#--------------------------------------
+
config TARGET_CFLAGS
string
prompt "Target CFLAGS"