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: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202408032138.P7sBvIns-lkp@intel.com/
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Greg Ungerer <gerg@linux-m68k.org>
Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
Link: https://lore.kernel.org/20241030195638.22542-1-arnd@kernel.org
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
This commit is contained in:
Arnd Bergmann 2024-10-30 20:56:13 +01:00 committed by Geert Uytterhoeven
parent fc10edd913
commit 5d42a68573
5 changed files with 31 additions and 56 deletions

View File

@ -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.

View File

@ -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
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.
endchoice
if M68KCLASSIC
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

View File

@ -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

View File

@ -5,16 +5,8 @@
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_SUN3) := sun3-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
obj-y += setup.o signal.o sys_m68k.o syscalltable.o time.o traps.o

View File

@ -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)
{