Use RELAXED ieee754 mode for Loongson-3 as 3A 4000 is 2008-only
authorYunQiang Su <syq@debian.org>
Mon, 16 Nov 2020 01:11:00 +0000 (09:11 +0800)
committerSalvatore Bonaccorso <carnil@debian.org>
Thu, 31 Dec 2020 06:26:43 +0000 (06:26 +0000)
Forwarded: not-needed

There are 2 mode of value of IEEE NaN hardcoded by CPU.
Currently, our mipsel/mips64el port is in so-called lagacy mode.
Loongson 3A 4000 is set as the so-called 2008 mode.

To make Debian workable on Loongson 3A 4000, we need set the kerenl in
RELAXED mode.

https://web.archive.org/web/20180830093617/https://dmz-portal.mips.com/wiki/MIPS_ABI_-_NaN_Interlinking

Gbp-Pq: Topic debian
Gbp-Pq: Name mips-ieee754-relaxed.patch

arch/mips/kernel/fpu-probe.c

index e689d6a832342e393709b3e03bd14a3692aa7c68..667226f94c88f97caa6b285f240efe8c7242e587 100644 (file)
@@ -144,7 +144,12 @@ static void cpu_set_fpu_2008(struct cpuinfo_mips *c)
  * IEEE 754 conformance mode to use.  Affects the NaN encoding and the
  * ABS.fmt/NEG.fmt execution mode.
  */
-static enum { STRICT, LEGACY, STD2008, RELAXED } ieee754 = STRICT;
+enum ieee754_mode { STRICT, LEGACY, STD2008, RELAXED };
+#ifdef CONFIG_CPU_LOONGSON64
+static enum ieee754_mode ieee754 = RELAXED;
+#else
+static enum ieee754_mode ieee754 = STRICT;
+#endif
 
 /*
  * Set the IEEE 754 NaN encodings and the ABS.fmt/NEG.fmt execution modes