* [Buildroot] [PATCH v3 1/2] MIPS: add support for XBurst cores
@ 2016-11-09 16:16 Vicente Olivert Riera
2016-11-09 16:16 ` [Buildroot] [PATCH v3 2/2] ci20_defconfig: use XBurst CPU Vicente Olivert Riera
2016-11-09 20:37 ` [Buildroot] [PATCH v3 1/2] MIPS: add support for XBurst cores Thomas Petazzoni
0 siblings, 2 replies; 3+ messages in thread
From: Vicente Olivert Riera @ 2016-11-09 16:16 UTC (permalink / raw)
To: buildroot
The Ingenic XBurst is a MIPS32R2 microprocessor.
It has a bug in the FPU that can generate incorrect results in certain
cases. The problem shows up when you have several fused madd
instructions in sequence with dependant operands.
Using the -mno-fused-madd option prevents gcc from emitting these
instructions. This patch adds changes to the toolchain wrapper to use
that option.
Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
---
Changes v2 -> v3:
- Improve commit log and add help section. (Suggested by Arnout)
Changes v1 -> v2:
- Do not add -mmxu to the wrapper.
---
arch/Config.in.mips | 14 ++++++++++++++
toolchain/toolchain-wrapper.c | 3 +++
toolchain/toolchain-wrapper.mk | 5 +++++
3 files changed, 22 insertions(+)
diff --git a/arch/Config.in.mips b/arch/Config.in.mips
index 3662fed..7998cea 100644
--- a/arch/Config.in.mips
+++ b/arch/Config.in.mips
@@ -63,6 +63,19 @@ config BR2_mips_p5600
bool "P5600"
depends on !BR2_ARCH_IS_64
select BR2_MIPS_CPU_MIPS32R5
+config BR2_mips_xburst
+ bool "XBurst"
+ depends on !BR2_ARCH_IS_64
+ select BR2_MIPS_CPU_MIPS32R2
+ help
+ The Ingenic XBurst is a MIPS32R2 microprocessor. It has a bug
+ in the FPU that can generate incorrect results in certain
+ cases. The problem shows up when you have several fused madd
+ instructions in sequence with dependant operands. This
+ requires the -mno-fused-madd compiler option to be used in
+ order to prevent emitting these instructions.
+
+ See http://www.ingenic.com/en/?xburst.html
config BR2_mips_64
bool "Generic MIPS64"
depends on BR2_ARCH_IS_64
@@ -137,6 +150,7 @@ config BR2_GCC_TARGET_ARCH
default "m5101" if BR2_mips_m5101
default "m6201" if BR2_mips_m6201
default "p5600" if BR2_mips_p5600
+ default "mips32r2" if BR2_mips_xburst
default "mips64" if BR2_mips_64
default "mips64r2" if BR2_mips_64r2
default "mips64r5" if BR2_mips_64r5
diff --git a/toolchain/toolchain-wrapper.c b/toolchain/toolchain-wrapper.c
index 925d013..d59629b 100644
--- a/toolchain/toolchain-wrapper.c
+++ b/toolchain/toolchain-wrapper.c
@@ -66,6 +66,9 @@ static char *predef_args[] = {
#ifdef BR_OMIT_LOCK_PREFIX
"-Wa,-momit-lock-prefix=yes",
#endif
+#ifdef BR_NO_FUSED_MADD
+ "-mno-fused-madd",
+#endif
#ifdef BR_BINFMT_FLAT
"-Wl,-elf2flt",
#endif
diff --git a/toolchain/toolchain-wrapper.mk b/toolchain/toolchain-wrapper.mk
index e7aa5fb..c7b5019 100644
--- a/toolchain/toolchain-wrapper.mk
+++ b/toolchain/toolchain-wrapper.mk
@@ -26,6 +26,11 @@ ifeq ($(BR2_x86_x1000),y)
TOOLCHAIN_WRAPPER_ARGS += -DBR_OMIT_LOCK_PREFIX
endif
+# Avoid FPU bug on XBurst CPUs
+ifeq ($(BR2_mips_xburst),y)
+TOOLCHAIN_WRAPPER_ARGS += -DBR_NO_FUSED_MADD
+endif
+
ifeq ($(BR2_CCACHE_USE_BASEDIR),y)
TOOLCHAIN_WRAPPER_ARGS += -DBR_CCACHE_BASEDIR='"$(BASE_DIR)"'
endif
--
2.10.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [Buildroot] [PATCH v3 2/2] ci20_defconfig: use XBurst CPU
2016-11-09 16:16 [Buildroot] [PATCH v3 1/2] MIPS: add support for XBurst cores Vicente Olivert Riera
@ 2016-11-09 16:16 ` Vicente Olivert Riera
2016-11-09 20:37 ` [Buildroot] [PATCH v3 1/2] MIPS: add support for XBurst cores Thomas Petazzoni
1 sibling, 0 replies; 3+ messages in thread
From: Vicente Olivert Riera @ 2016-11-09 16:16 UTC (permalink / raw)
To: buildroot
Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
---
Changes v1 -> v3:
- None.
---
configs/ci20_defconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configs/ci20_defconfig b/configs/ci20_defconfig
index bd30cbd..ecf3007 100644
--- a/configs/ci20_defconfig
+++ b/configs/ci20_defconfig
@@ -1,6 +1,6 @@
# architecture
BR2_mipsel=y
-BR2_mips_32r2=y
+BR2_mips_xburst=y
# BR2_MIPS_SOFT_FLOAT is not set
# Linux headers same as kernel, a 3.18 series
--
2.10.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [Buildroot] [PATCH v3 1/2] MIPS: add support for XBurst cores
2016-11-09 16:16 [Buildroot] [PATCH v3 1/2] MIPS: add support for XBurst cores Vicente Olivert Riera
2016-11-09 16:16 ` [Buildroot] [PATCH v3 2/2] ci20_defconfig: use XBurst CPU Vicente Olivert Riera
@ 2016-11-09 20:37 ` Thomas Petazzoni
1 sibling, 0 replies; 3+ messages in thread
From: Thomas Petazzoni @ 2016-11-09 20:37 UTC (permalink / raw)
To: buildroot
Hello,
On Wed, 9 Nov 2016 16:16:57 +0000, Vicente Olivert Riera wrote:
> The Ingenic XBurst is a MIPS32R2 microprocessor.
>
> It has a bug in the FPU that can generate incorrect results in certain
> cases. The problem shows up when you have several fused madd
> instructions in sequence with dependant operands.
>
> Using the -mno-fused-madd option prevents gcc from emitting these
> instructions. This patch adds changes to the toolchain wrapper to use
> that option.
>
> Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
> ---
> Changes v2 -> v3:
> - Improve commit log and add help section. (Suggested by Arnout)
> Changes v1 -> v2:
> - Do not add -mmxu to the wrapper.
> ---
> arch/Config.in.mips | 14 ++++++++++++++
> toolchain/toolchain-wrapper.c | 3 +++
> toolchain/toolchain-wrapper.mk | 5 +++++
> 3 files changed, 22 insertions(+)
I've applied both patches to master. Even though it's adding a new
architecture entry, it's really a bug fix needed for the
ci20_defconfig, which is why I've chosen to apply this to master.
Thanks!
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-11-09 20:37 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-09 16:16 [Buildroot] [PATCH v3 1/2] MIPS: add support for XBurst cores Vicente Olivert Riera
2016-11-09 16:16 ` [Buildroot] [PATCH v3 2/2] ci20_defconfig: use XBurst CPU Vicente Olivert Riera
2016-11-09 20:37 ` [Buildroot] [PATCH v3 1/2] MIPS: add support for XBurst cores Thomas Petazzoni
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox