Commit 5d42a685 authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Geert Uytterhoeven
Browse files

m68k: Move Sun 3 into a top-level platform option



It is possible to select an m68k MMU build but not actually enable any
of the three MMU options, which then results in a build failure:

    arch/m68k/include/asm/page.h:10:25: error: 'CONFIG_PAGE_SHIFT' undeclared here (not in a function); did you mean 'CONFIG_LOG_BUF_SHIFT'?

Change the Kconfig selection to ensure that exactly one of the three
options is always enabled whenever an MMU-enabled kernel is built, but
moving CONFIG_SUN3 into a top-level option next to M68KCLASSIC and
COLDFIRE.

All defconfig files should keep working without changes, but
alldefconfig now builds support for the classic MMU.

Reported-by: default avatarkernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202408032138.P7sBvIns-lkp@intel.com/


Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Acked-by: default avatarGreg Ungerer <gerg@linux-m68k.org>
Reviewed-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
Link: https://lore.kernel.org/20241030195638.22542-1-arnd@kernel.org


Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
parent fc10edd9
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -84,24 +84,23 @@ config MMU
	  support by paged memory management. If unsure, say 'Y'.

config MMU_MOTOROLA
	bool
	def_bool MMU && M68KCLASSIC
	select HAVE_PAGE_SIZE_4KB

config MMU_COLDFIRE
	def_bool MMU && COLDFIRE
	select HAVE_PAGE_SIZE_8KB
	bool

config MMU_SUN3
	bool
	def_bool MMU && SUN3
	select HAVE_PAGE_SIZE_8KB
	depends on MMU && !MMU_MOTOROLA && !MMU_COLDFIRE

config ARCH_SUPPORTS_KEXEC
	def_bool M68KCLASSIC && MMU
	def_bool (M68KCLASSIC || SUN3) && MMU

config BOOTINFO_PROC
	bool "Export bootinfo in procfs"
	depends on KEXEC && M68KCLASSIC
	depends on KEXEC && (M68KCLASSIC || SUN3)
	help
	  Say Y to export the bootinfo used to boot the kernel in a
	  "bootinfo" file in procfs.  This is useful with kexec.
+22 −13
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@
comment "Processor Type"

choice
	prompt "CPU family support"
	prompt "CPU/machine family support"
	default M68KCLASSIC if MMU
	default COLDFIRE if !MMU
	help
@@ -19,7 +19,7 @@ choice
	  processor, select COLDFIRE.

config M68KCLASSIC
	bool "Classic M68K CPU family support"
	bool "Classic M68K CPU/machine family support"
	select HAVE_ARCH_PFN_VALID

config COLDFIRE
@@ -32,13 +32,23 @@ config COLDFIRE
	select HAVE_LEGACY_CLK
	select HAVE_PAGE_SIZE_8KB if !MMU

endchoice
config SUN3
	bool "Sun3 machine support"
	depends on MMU
	select HAVE_ARCH_PFN_VALID
	select LEGACY_TIMER_TICK
	select NO_DMA
	select M68020
	help
	  This option enables support for the Sun 3 series of workstations
	  (3/50, 3/60, 3/1xx, 3/2xx systems). These use a classic 68020 CPU
	  but the custom memory management unit makes them incompatible with
	  all other classic m68k machines, including Sun 3x.

if M68KCLASSIC
endchoice

config M68000
	def_bool y
	depends on !MMU
	def_bool M68KCLASSIC && !MMU
	select CPU_HAS_NO_BITFIELDS
	select CPU_HAS_NO_CAS
	select CPU_HAS_NO_MULDIV64
@@ -56,7 +66,7 @@ config M68000
	  a paging MMU.

config M68020
	bool "68020 support"
	bool "68020 support" if M68KCLASSIC
	depends on MMU
	select FPU
	select CPU_HAS_ADDRESS_SPACES
@@ -66,9 +76,10 @@ config M68020
	  68851 MMU (Memory Management Unit) to run Linux/m68k, except on the
	  Sun 3, which provides its own version.

if M68KCLASSIC && MMU

config M68030
	bool "68030 support"
	depends on MMU && !MMU_SUN3
	select FPU
	select CPU_HAS_ADDRESS_SPACES
	help
@@ -78,7 +89,6 @@ config M68030

config M68040
	bool "68040 support"
	depends on MMU && !MMU_SUN3
	select FPU
	select CPU_HAS_ADDRESS_SPACES
	help
@@ -89,13 +99,14 @@ config M68040

config M68060
	bool "68060 support"
	depends on MMU && !MMU_SUN3
	select FPU
	select CPU_HAS_ADDRESS_SPACES
	help
	  If you anticipate running this kernel on a computer with a MC68060
	  processor, say Y. Otherwise, say N.

endif # M68KCLASSIC

config M68328
	bool
	depends on !MMU
@@ -117,8 +128,6 @@ config M68VZ328
	help
	  Motorola 68VZ328 processor support.

endif # M68KCLASSIC

if COLDFIRE

choice
@@ -325,7 +334,7 @@ comment "Processor Specific Options"

config M68KFPU_EMU
	bool "Math emulation support"
	depends on M68KCLASSIC && FPU
	depends on (M68KCLASSIC || SUN3) && FPU
	help
	  At some point in the future, this will cause floating-point math
	  instructions to be emulated by the kernel on machines that lack a
+0 −25
Original line number Diff line number Diff line
@@ -6,7 +6,6 @@ if M68KCLASSIC
config AMIGA
	bool "Amiga support"
	depends on MMU
	select MMU_MOTOROLA if MMU
	select LEGACY_TIMER_TICK
	help
	  This option enables support for the Amiga series of computers. If
@@ -16,7 +15,6 @@ config AMIGA
config ATARI
	bool "Atari support"
	depends on MMU
	select MMU_MOTOROLA if MMU
	select HAVE_ARCH_NVRAM_OPS
	select LEGACY_TIMER_TICK
	help
@@ -31,7 +29,6 @@ config ATARI_KBD_CORE
config MAC
	bool "Macintosh support"
	depends on MMU
	select MMU_MOTOROLA if MMU
	select HAVE_ARCH_NVRAM_OPS
	select HAVE_PATA_PLATFORM
	select LEGACY_TIMER_TICK
@@ -44,7 +41,6 @@ config MAC
config APOLLO
	bool "Apollo support"
	depends on MMU
	select MMU_MOTOROLA if MMU
	select LEGACY_TIMER_TICK
	help
	  Say Y here if you want to run Linux on an MC680x0-based Apollo
@@ -53,7 +49,6 @@ config APOLLO
config VME
	bool "VME (Motorola and BVM) support"
	depends on MMU
	select MMU_MOTOROLA if MMU
	help
	  Say Y here if you want to build a kernel for a 680x0 based VME
	  board.  Boards currently supported include Motorola boards MVME147,
@@ -97,7 +92,6 @@ config BVME6000
config HP300
	bool "HP9000/300 and HP9000/400 support"
	depends on MMU
	select MMU_MOTOROLA if MMU
	select LEGACY_TIMER_TICK
	help
	  This option enables support for the HP9000/300 and HP9000/400 series
@@ -110,7 +104,6 @@ config SUN3X
	bool "Sun3x support"
	depends on MMU
	select LEGACY_TIMER_TICK
	select MMU_MOTOROLA if MMU
	select M68030
	help
	  This option enables support for the Sun 3x series of workstations.
@@ -124,7 +117,6 @@ config SUN3X
config Q40
	bool "Q40/Q60 support"
	depends on MMU
	select MMU_MOTOROLA if MMU
	select LEGACY_TIMER_TICK
	help
	  The Q40 is a Motorola 68040-based successor to the Sinclair QL
@@ -133,22 +125,6 @@ config Q40
	  Q60. Select your CPU below.  For 68LC060 don't forget to enable FPU
	  emulation.

config SUN3
	bool "Sun3 support"
	depends on MMU
	depends on !MMU_MOTOROLA
	select MMU_SUN3 if MMU
	select LEGACY_TIMER_TICK
	select NO_DMA
	select M68020
	help
	  This option enables support for the Sun 3 series of workstations
	  (3/50, 3/60, 3/1xx, 3/2xx systems). Enabling this option requires
	  that all other hardware types must be disabled, as Sun 3 kernels
	  are incompatible with all other m68k targets (including Sun 3x!).

	  If you don't want to compile a kernel exclusively for a Sun 3, say N.

config VIRT
	bool "Virtual M68k Machine support"
	depends on MMU
@@ -157,7 +133,6 @@ config VIRT
	select GOLDFISH_TIMER
	select GOLDFISH_TTY
	select M68040
	select MMU_MOTOROLA if MMU
	select RTC_CLASS
	select RTC_DRV_GOLDFISH
	select TTY
+2 −10
Original line number Diff line number Diff line
@@ -5,15 +5,7 @@

extra-y			+= vmlinux.lds

obj-$(CONFIG_AMIGA)	:= head.o
obj-$(CONFIG_ATARI)	:= head.o
obj-$(CONFIG_MAC)	:= head.o
obj-$(CONFIG_APOLLO)	:= head.o
obj-$(CONFIG_VME)	:= head.o
obj-$(CONFIG_HP300)	:= head.o
obj-$(CONFIG_Q40)	:= head.o
obj-$(CONFIG_SUN3X)	:= head.o
obj-$(CONFIG_VIRT)	:= head.o
obj-$(CONFIG_MMU_MOTOROLA)	:= head.o
obj-$(CONFIG_SUN3)		:= sun3-head.o

obj-y	+= entry.o irq.o module.o process.o ptrace.o
+2 −2
Original line number Diff line number Diff line
@@ -62,7 +62,7 @@ void timer_heartbeat(void)
}
#endif /* CONFIG_HEARTBEAT */

#ifdef CONFIG_M68KCLASSIC
#if defined(CONFIG_M68KCLASSIC) || defined(CONFIG_SUN3)
/* machine dependent timer functions */
int (*mach_hwclk) (int, struct rtc_time*);
EXPORT_SYMBOL(mach_hwclk);
@@ -149,7 +149,7 @@ static int __init rtc_init(void)

module_init(rtc_init);
#endif /* CONFIG_RTC_DRV_GENERIC */
#endif /* CONFIG M68KCLASSIC */
#endif /* CONFIG_M68KCLASSIC || SUN3 */

void __init time_init(void)
{