The e300c2 core which is embedded in mpc832x CPU doesn't have
an FPU.

Make it possible to not select CONFIG_PPC_FPU when building a
kernel dedicated to that target.

Signed-off-by: Christophe Leroy <christophe.le...@csgroup.eu>
---
 arch/powerpc/kernel/head_32.S          |  4 ++++
 arch/powerpc/platforms/Kconfig.cputype | 11 +++++++++--
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/kernel/head_32.S b/arch/powerpc/kernel/head_32.S
index f3ab94d73936..588fe8644df6 100644
--- a/arch/powerpc/kernel/head_32.S
+++ b/arch/powerpc/kernel/head_32.S
@@ -413,6 +413,7 @@ Alignment:
        . = 0x800
        DO_KVM  0x800
 FPUnavailable:
+#ifdef CONFIG_PPC_FPU
 BEGIN_FTR_SECTION
 /*
  * Certain Freescale cores don't have a FPU and treat fp instructions
@@ -426,6 +427,9 @@ END_FTR_SECTION_IFSET(CPU_FTR_FPU_UNAVAILABLE)
        b       fast_exception_return
 1:     addi    r3,r1,STACK_FRAME_OVERHEAD
        EXC_XFER_LITE(0x800, kernel_fp_unavailable_exception)
+#else
+       b       ProgramCheck
+#endif
 
 /* Decrementer */
        EXCEPTION(0x900, Decrementer, timer_interrupt, EXC_XFER_LITE)
diff --git a/arch/powerpc/platforms/Kconfig.cputype 
b/arch/powerpc/platforms/Kconfig.cputype
index 40ffcdba42b8..d4fd109f177e 100644
--- a/arch/powerpc/platforms/Kconfig.cputype
+++ b/arch/powerpc/platforms/Kconfig.cputype
@@ -32,7 +32,7 @@ choice
 config PPC_BOOK3S_6xx
        bool "512x/52xx/6xx/7xx/74xx/82xx/83xx/86xx except 601"
        select PPC_BOOK3S_32
-       select PPC_FPU
+       imply PPC_FPU
        select PPC_HAVE_PMU_SUPPORT
        select PPC_HAVE_KUEP
        select PPC_HAVE_KUAP
@@ -229,9 +229,16 @@ config PPC_FPU_REGS
        bool
 
 config PPC_FPU
-       bool
+       bool "Support for Floating Point Unit (FPU)" if PPC_MPC832x
        default y if PPC64
        select PPC_FPU_REGS
+       help
+         This must be enabled to support the Floating Point Unit
+         Most 6xx have an FPU but e300c2 core (mpc832x) don't have
+         an FPU, so when building an embedded kernel for that target
+         you can disable FPU support.
+
+         If unsure say Y.
 
 config FSL_EMB_PERFMON
        bool "Freescale Embedded Perfmon"
-- 
2.25.0

Reply via email to