OSDN Git Service

powerpc/32s: Allow deselecting CONFIG_PPC_FPU on mpc832x
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Tue, 18 Aug 2020 17:19:18 +0000 (17:19 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 3 Dec 2020 14:01:12 +0000 (01:01 +1100)
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.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/fcdc60d85baf80eaa0a7f3261d9d889282068216.1597770847.git.christophe.leroy@csgroup.eu
arch/powerpc/kernel/head_book3s_32.S
arch/powerpc/platforms/Kconfig.cputype

index ed25d99..bbcc84c 100644 (file)
@@ -394,6 +394,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
@@ -407,6 +408,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)
index 3e36e37..44ab03f 100644 (file)
@@ -32,7 +32,7 @@ choice
 config PPC_BOOK3S_6xx
        bool "512x/52xx/6xx/7xx/74xx/82xx/83xx/86xx"
        select PPC_BOOK3S_32
-       select PPC_FPU
+       imply PPC_FPU
        select PPC_HAVE_PMU_SUPPORT
        select PPC_HAVE_KUEP
        select PPC_HAVE_KUAP
@@ -222,9 +222,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"