mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:41:42 +00:00
m68k updates for v6.13
- Revive SCSI and early console support on MVME147, - Fix early kernel parameters using static keys, - Prevent and improve handling of kernel configurations that lack specific platform, CPU, or MMU support, to avoid build failures, - Miscellaneous fixes and improvements, - Defconfig updates. -----BEGIN PGP SIGNATURE----- iIsEABYIADMWIQQ9qaHoIs/1I4cXmEiKwlD9ZEnxcAUCZzs2+hUcZ2VlcnRAbGlu dXgtbTY4ay5vcmcACgkQisJQ/WRJ8XBHEQEA3v4OTaIJFvmZkzFsJBjz1eY5h/DD ftWAqd+Q5bYOjLsA/ij6ZhY/R04EB80J4F8Fm88mO4FF7NQRB4aid4+QaZoK =AAi3 -----END PGP SIGNATURE----- Merge tag 'm68k-for-v6.13-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k Pull m68k updates from Geert Uytterhoeven: - Revive SCSI and early console support on MVME147 - Fix early kernel parameters using static keys - Prevent and improve handling of kernel configurations that lack specific platform, CPU, or MMU support, to avoid build failures - Miscellaneous fixes and improvements - Defconfig updates * tag 'm68k-for-v6.13-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k: m68k: defconfig: Update defconfigs for v6.12-rc1 m68k: mvme147: Reinstate early console m68k: Make sure NR_IRQS is never zero m68k: Select M68020 as fallback for classic m68k: Move Sun 3 into a top-level platform option m68k: kernel: Use str_read_write() helper function m68k: Initialize jump labels early during setup_arch() m68k: mvme147: Fix SCSI controller IRQ numbers m68k: mvme147: Make mvme147_sched_init() __init
This commit is contained in:
commit
9aa4c37f71
@ -84,24 +84,23 @@ config MMU
|
|||||||
support by paged memory management. If unsure, say 'Y'.
|
support by paged memory management. If unsure, say 'Y'.
|
||||||
|
|
||||||
config MMU_MOTOROLA
|
config MMU_MOTOROLA
|
||||||
bool
|
def_bool MMU && M68KCLASSIC
|
||||||
select HAVE_PAGE_SIZE_4KB
|
select HAVE_PAGE_SIZE_4KB
|
||||||
|
|
||||||
config MMU_COLDFIRE
|
config MMU_COLDFIRE
|
||||||
|
def_bool MMU && COLDFIRE
|
||||||
select HAVE_PAGE_SIZE_8KB
|
select HAVE_PAGE_SIZE_8KB
|
||||||
bool
|
|
||||||
|
|
||||||
config MMU_SUN3
|
config MMU_SUN3
|
||||||
bool
|
def_bool MMU && SUN3
|
||||||
select HAVE_PAGE_SIZE_8KB
|
select HAVE_PAGE_SIZE_8KB
|
||||||
depends on MMU && !MMU_MOTOROLA && !MMU_COLDFIRE
|
|
||||||
|
|
||||||
config ARCH_SUPPORTS_KEXEC
|
config ARCH_SUPPORTS_KEXEC
|
||||||
def_bool M68KCLASSIC && MMU
|
def_bool (M68KCLASSIC || SUN3) && MMU
|
||||||
|
|
||||||
config BOOTINFO_PROC
|
config BOOTINFO_PROC
|
||||||
bool "Export bootinfo in procfs"
|
bool "Export bootinfo in procfs"
|
||||||
depends on KEXEC && M68KCLASSIC
|
depends on KEXEC && (M68KCLASSIC || SUN3)
|
||||||
help
|
help
|
||||||
Say Y to export the bootinfo used to boot the kernel in a
|
Say Y to export the bootinfo used to boot the kernel in a
|
||||||
"bootinfo" file in procfs. This is useful with kexec.
|
"bootinfo" file in procfs. This is useful with kexec.
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
comment "Processor Type"
|
comment "Processor Type"
|
||||||
|
|
||||||
choice
|
choice
|
||||||
prompt "CPU family support"
|
prompt "CPU/machine family support"
|
||||||
default M68KCLASSIC if MMU
|
default M68KCLASSIC if MMU
|
||||||
default COLDFIRE if !MMU
|
default COLDFIRE if !MMU
|
||||||
help
|
help
|
||||||
@ -19,8 +19,9 @@ choice
|
|||||||
processor, select COLDFIRE.
|
processor, select COLDFIRE.
|
||||||
|
|
||||||
config M68KCLASSIC
|
config M68KCLASSIC
|
||||||
bool "Classic M68K CPU family support"
|
bool "Classic M68K CPU/machine family support"
|
||||||
select HAVE_ARCH_PFN_VALID
|
select HAVE_ARCH_PFN_VALID
|
||||||
|
select M68020 if MMU && !(M68030 || M68040 || M68060)
|
||||||
|
|
||||||
config COLDFIRE
|
config COLDFIRE
|
||||||
bool "Coldfire CPU family support"
|
bool "Coldfire CPU family support"
|
||||||
@ -32,13 +33,23 @@ config COLDFIRE
|
|||||||
select HAVE_LEGACY_CLK
|
select HAVE_LEGACY_CLK
|
||||||
select HAVE_PAGE_SIZE_8KB if !MMU
|
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
|
endchoice
|
||||||
|
|
||||||
if M68KCLASSIC
|
|
||||||
|
|
||||||
config M68000
|
config M68000
|
||||||
def_bool y
|
def_bool M68KCLASSIC && !MMU
|
||||||
depends on !MMU
|
|
||||||
select CPU_HAS_NO_BITFIELDS
|
select CPU_HAS_NO_BITFIELDS
|
||||||
select CPU_HAS_NO_CAS
|
select CPU_HAS_NO_CAS
|
||||||
select CPU_HAS_NO_MULDIV64
|
select CPU_HAS_NO_MULDIV64
|
||||||
@ -56,7 +67,7 @@ config M68000
|
|||||||
a paging MMU.
|
a paging MMU.
|
||||||
|
|
||||||
config M68020
|
config M68020
|
||||||
bool "68020 support"
|
bool "68020 support" if M68KCLASSIC
|
||||||
depends on MMU
|
depends on MMU
|
||||||
select FPU
|
select FPU
|
||||||
select CPU_HAS_ADDRESS_SPACES
|
select CPU_HAS_ADDRESS_SPACES
|
||||||
@ -66,9 +77,10 @@ config M68020
|
|||||||
68851 MMU (Memory Management Unit) to run Linux/m68k, except on the
|
68851 MMU (Memory Management Unit) to run Linux/m68k, except on the
|
||||||
Sun 3, which provides its own version.
|
Sun 3, which provides its own version.
|
||||||
|
|
||||||
|
if M68KCLASSIC && MMU
|
||||||
|
|
||||||
config M68030
|
config M68030
|
||||||
bool "68030 support"
|
bool "68030 support"
|
||||||
depends on MMU && !MMU_SUN3
|
|
||||||
select FPU
|
select FPU
|
||||||
select CPU_HAS_ADDRESS_SPACES
|
select CPU_HAS_ADDRESS_SPACES
|
||||||
help
|
help
|
||||||
@ -78,7 +90,6 @@ config M68030
|
|||||||
|
|
||||||
config M68040
|
config M68040
|
||||||
bool "68040 support"
|
bool "68040 support"
|
||||||
depends on MMU && !MMU_SUN3
|
|
||||||
select FPU
|
select FPU
|
||||||
select CPU_HAS_ADDRESS_SPACES
|
select CPU_HAS_ADDRESS_SPACES
|
||||||
help
|
help
|
||||||
@ -89,13 +100,14 @@ config M68040
|
|||||||
|
|
||||||
config M68060
|
config M68060
|
||||||
bool "68060 support"
|
bool "68060 support"
|
||||||
depends on MMU && !MMU_SUN3
|
|
||||||
select FPU
|
select FPU
|
||||||
select CPU_HAS_ADDRESS_SPACES
|
select CPU_HAS_ADDRESS_SPACES
|
||||||
help
|
help
|
||||||
If you anticipate running this kernel on a computer with a MC68060
|
If you anticipate running this kernel on a computer with a MC68060
|
||||||
processor, say Y. Otherwise, say N.
|
processor, say Y. Otherwise, say N.
|
||||||
|
|
||||||
|
endif # M68KCLASSIC
|
||||||
|
|
||||||
config M68328
|
config M68328
|
||||||
bool
|
bool
|
||||||
depends on !MMU
|
depends on !MMU
|
||||||
@ -117,8 +129,6 @@ config M68VZ328
|
|||||||
help
|
help
|
||||||
Motorola 68VZ328 processor support.
|
Motorola 68VZ328 processor support.
|
||||||
|
|
||||||
endif # M68KCLASSIC
|
|
||||||
|
|
||||||
if COLDFIRE
|
if COLDFIRE
|
||||||
|
|
||||||
choice
|
choice
|
||||||
@ -325,7 +335,7 @@ comment "Processor Specific Options"
|
|||||||
|
|
||||||
config M68KFPU_EMU
|
config M68KFPU_EMU
|
||||||
bool "Math emulation support"
|
bool "Math emulation support"
|
||||||
depends on M68KCLASSIC && FPU
|
depends on (M68KCLASSIC || SUN3) && FPU
|
||||||
help
|
help
|
||||||
At some point in the future, this will cause floating-point math
|
At some point in the future, this will cause floating-point math
|
||||||
instructions to be emulated by the kernel on machines that lack a
|
instructions to be emulated by the kernel on machines that lack a
|
||||||
|
@ -6,7 +6,6 @@ if M68KCLASSIC
|
|||||||
config AMIGA
|
config AMIGA
|
||||||
bool "Amiga support"
|
bool "Amiga support"
|
||||||
depends on MMU
|
depends on MMU
|
||||||
select MMU_MOTOROLA if MMU
|
|
||||||
select LEGACY_TIMER_TICK
|
select LEGACY_TIMER_TICK
|
||||||
help
|
help
|
||||||
This option enables support for the Amiga series of computers. If
|
This option enables support for the Amiga series of computers. If
|
||||||
@ -16,7 +15,6 @@ config AMIGA
|
|||||||
config ATARI
|
config ATARI
|
||||||
bool "Atari support"
|
bool "Atari support"
|
||||||
depends on MMU
|
depends on MMU
|
||||||
select MMU_MOTOROLA if MMU
|
|
||||||
select HAVE_ARCH_NVRAM_OPS
|
select HAVE_ARCH_NVRAM_OPS
|
||||||
select LEGACY_TIMER_TICK
|
select LEGACY_TIMER_TICK
|
||||||
help
|
help
|
||||||
@ -31,7 +29,6 @@ config ATARI_KBD_CORE
|
|||||||
config MAC
|
config MAC
|
||||||
bool "Macintosh support"
|
bool "Macintosh support"
|
||||||
depends on MMU
|
depends on MMU
|
||||||
select MMU_MOTOROLA if MMU
|
|
||||||
select HAVE_ARCH_NVRAM_OPS
|
select HAVE_ARCH_NVRAM_OPS
|
||||||
select HAVE_PATA_PLATFORM
|
select HAVE_PATA_PLATFORM
|
||||||
select LEGACY_TIMER_TICK
|
select LEGACY_TIMER_TICK
|
||||||
@ -44,7 +41,6 @@ config MAC
|
|||||||
config APOLLO
|
config APOLLO
|
||||||
bool "Apollo support"
|
bool "Apollo support"
|
||||||
depends on MMU
|
depends on MMU
|
||||||
select MMU_MOTOROLA if MMU
|
|
||||||
select LEGACY_TIMER_TICK
|
select LEGACY_TIMER_TICK
|
||||||
help
|
help
|
||||||
Say Y here if you want to run Linux on an MC680x0-based Apollo
|
Say Y here if you want to run Linux on an MC680x0-based Apollo
|
||||||
@ -53,7 +49,6 @@ config APOLLO
|
|||||||
config VME
|
config VME
|
||||||
bool "VME (Motorola and BVM) support"
|
bool "VME (Motorola and BVM) support"
|
||||||
depends on MMU
|
depends on MMU
|
||||||
select MMU_MOTOROLA if MMU
|
|
||||||
help
|
help
|
||||||
Say Y here if you want to build a kernel for a 680x0 based VME
|
Say Y here if you want to build a kernel for a 680x0 based VME
|
||||||
board. Boards currently supported include Motorola boards MVME147,
|
board. Boards currently supported include Motorola boards MVME147,
|
||||||
@ -97,7 +92,6 @@ config BVME6000
|
|||||||
config HP300
|
config HP300
|
||||||
bool "HP9000/300 and HP9000/400 support"
|
bool "HP9000/300 and HP9000/400 support"
|
||||||
depends on MMU
|
depends on MMU
|
||||||
select MMU_MOTOROLA if MMU
|
|
||||||
select LEGACY_TIMER_TICK
|
select LEGACY_TIMER_TICK
|
||||||
help
|
help
|
||||||
This option enables support for the HP9000/300 and HP9000/400 series
|
This option enables support for the HP9000/300 and HP9000/400 series
|
||||||
@ -110,7 +104,6 @@ config SUN3X
|
|||||||
bool "Sun3x support"
|
bool "Sun3x support"
|
||||||
depends on MMU
|
depends on MMU
|
||||||
select LEGACY_TIMER_TICK
|
select LEGACY_TIMER_TICK
|
||||||
select MMU_MOTOROLA if MMU
|
|
||||||
select M68030
|
select M68030
|
||||||
help
|
help
|
||||||
This option enables support for the Sun 3x series of workstations.
|
This option enables support for the Sun 3x series of workstations.
|
||||||
@ -124,7 +117,6 @@ config SUN3X
|
|||||||
config Q40
|
config Q40
|
||||||
bool "Q40/Q60 support"
|
bool "Q40/Q60 support"
|
||||||
depends on MMU
|
depends on MMU
|
||||||
select MMU_MOTOROLA if MMU
|
|
||||||
select LEGACY_TIMER_TICK
|
select LEGACY_TIMER_TICK
|
||||||
help
|
help
|
||||||
The Q40 is a Motorola 68040-based successor to the Sinclair QL
|
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
|
Q60. Select your CPU below. For 68LC060 don't forget to enable FPU
|
||||||
emulation.
|
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
|
config VIRT
|
||||||
bool "Virtual M68k Machine support"
|
bool "Virtual M68k Machine support"
|
||||||
depends on MMU
|
depends on MMU
|
||||||
@ -157,7 +133,6 @@ config VIRT
|
|||||||
select GOLDFISH_TIMER
|
select GOLDFISH_TIMER
|
||||||
select GOLDFISH_TTY
|
select GOLDFISH_TTY
|
||||||
select M68040
|
select M68040
|
||||||
select MMU_MOTOROLA if MMU
|
|
||||||
select RTC_CLASS
|
select RTC_CLASS
|
||||||
select RTC_DRV_GOLDFISH
|
select RTC_DRV_GOLDFISH
|
||||||
select TTY
|
select TTY
|
||||||
|
@ -620,6 +620,7 @@ CONFIG_KUNIT_ALL_TESTS=m
|
|||||||
CONFIG_TEST_DHRY=m
|
CONFIG_TEST_DHRY=m
|
||||||
CONFIG_TEST_MIN_HEAP=m
|
CONFIG_TEST_MIN_HEAP=m
|
||||||
CONFIG_TEST_DIV64=m
|
CONFIG_TEST_DIV64=m
|
||||||
|
CONFIG_TEST_MULDIV64=m
|
||||||
CONFIG_REED_SOLOMON_TEST=m
|
CONFIG_REED_SOLOMON_TEST=m
|
||||||
CONFIG_ATOMIC64_SELFTEST=m
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
|
@ -577,6 +577,7 @@ CONFIG_KUNIT_ALL_TESTS=m
|
|||||||
CONFIG_TEST_DHRY=m
|
CONFIG_TEST_DHRY=m
|
||||||
CONFIG_TEST_MIN_HEAP=m
|
CONFIG_TEST_MIN_HEAP=m
|
||||||
CONFIG_TEST_DIV64=m
|
CONFIG_TEST_DIV64=m
|
||||||
|
CONFIG_TEST_MULDIV64=m
|
||||||
CONFIG_REED_SOLOMON_TEST=m
|
CONFIG_REED_SOLOMON_TEST=m
|
||||||
CONFIG_ATOMIC64_SELFTEST=m
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
|
@ -597,6 +597,7 @@ CONFIG_KUNIT_ALL_TESTS=m
|
|||||||
CONFIG_TEST_DHRY=m
|
CONFIG_TEST_DHRY=m
|
||||||
CONFIG_TEST_MIN_HEAP=m
|
CONFIG_TEST_MIN_HEAP=m
|
||||||
CONFIG_TEST_DIV64=m
|
CONFIG_TEST_DIV64=m
|
||||||
|
CONFIG_TEST_MULDIV64=m
|
||||||
CONFIG_REED_SOLOMON_TEST=m
|
CONFIG_REED_SOLOMON_TEST=m
|
||||||
CONFIG_ATOMIC64_SELFTEST=m
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
|
@ -569,6 +569,7 @@ CONFIG_KUNIT_ALL_TESTS=m
|
|||||||
CONFIG_TEST_DHRY=m
|
CONFIG_TEST_DHRY=m
|
||||||
CONFIG_TEST_MIN_HEAP=m
|
CONFIG_TEST_MIN_HEAP=m
|
||||||
CONFIG_TEST_DIV64=m
|
CONFIG_TEST_DIV64=m
|
||||||
|
CONFIG_TEST_MULDIV64=m
|
||||||
CONFIG_REED_SOLOMON_TEST=m
|
CONFIG_REED_SOLOMON_TEST=m
|
||||||
CONFIG_ATOMIC64_SELFTEST=m
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
|
@ -579,6 +579,7 @@ CONFIG_KUNIT_ALL_TESTS=m
|
|||||||
CONFIG_TEST_DHRY=m
|
CONFIG_TEST_DHRY=m
|
||||||
CONFIG_TEST_MIN_HEAP=m
|
CONFIG_TEST_MIN_HEAP=m
|
||||||
CONFIG_TEST_DIV64=m
|
CONFIG_TEST_DIV64=m
|
||||||
|
CONFIG_TEST_MULDIV64=m
|
||||||
CONFIG_REED_SOLOMON_TEST=m
|
CONFIG_REED_SOLOMON_TEST=m
|
||||||
CONFIG_ATOMIC64_SELFTEST=m
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
|
@ -596,6 +596,7 @@ CONFIG_KUNIT_ALL_TESTS=m
|
|||||||
CONFIG_TEST_DHRY=m
|
CONFIG_TEST_DHRY=m
|
||||||
CONFIG_TEST_MIN_HEAP=m
|
CONFIG_TEST_MIN_HEAP=m
|
||||||
CONFIG_TEST_DIV64=m
|
CONFIG_TEST_DIV64=m
|
||||||
|
CONFIG_TEST_MULDIV64=m
|
||||||
CONFIG_REED_SOLOMON_TEST=m
|
CONFIG_REED_SOLOMON_TEST=m
|
||||||
CONFIG_ATOMIC64_SELFTEST=m
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
|
@ -682,6 +682,7 @@ CONFIG_KUNIT_ALL_TESTS=m
|
|||||||
CONFIG_TEST_DHRY=m
|
CONFIG_TEST_DHRY=m
|
||||||
CONFIG_TEST_MIN_HEAP=m
|
CONFIG_TEST_MIN_HEAP=m
|
||||||
CONFIG_TEST_DIV64=m
|
CONFIG_TEST_DIV64=m
|
||||||
|
CONFIG_TEST_MULDIV64=m
|
||||||
CONFIG_REED_SOLOMON_TEST=m
|
CONFIG_REED_SOLOMON_TEST=m
|
||||||
CONFIG_ATOMIC64_SELFTEST=m
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
|
@ -568,6 +568,7 @@ CONFIG_KUNIT_ALL_TESTS=m
|
|||||||
CONFIG_TEST_DHRY=m
|
CONFIG_TEST_DHRY=m
|
||||||
CONFIG_TEST_MIN_HEAP=m
|
CONFIG_TEST_MIN_HEAP=m
|
||||||
CONFIG_TEST_DIV64=m
|
CONFIG_TEST_DIV64=m
|
||||||
|
CONFIG_TEST_MULDIV64=m
|
||||||
CONFIG_REED_SOLOMON_TEST=m
|
CONFIG_REED_SOLOMON_TEST=m
|
||||||
CONFIG_ATOMIC64_SELFTEST=m
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
|
@ -569,6 +569,7 @@ CONFIG_KUNIT_ALL_TESTS=m
|
|||||||
CONFIG_TEST_DHRY=m
|
CONFIG_TEST_DHRY=m
|
||||||
CONFIG_TEST_MIN_HEAP=m
|
CONFIG_TEST_MIN_HEAP=m
|
||||||
CONFIG_TEST_DIV64=m
|
CONFIG_TEST_DIV64=m
|
||||||
|
CONFIG_TEST_MULDIV64=m
|
||||||
CONFIG_REED_SOLOMON_TEST=m
|
CONFIG_REED_SOLOMON_TEST=m
|
||||||
CONFIG_ATOMIC64_SELFTEST=m
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
|
@ -586,6 +586,7 @@ CONFIG_KUNIT_ALL_TESTS=m
|
|||||||
CONFIG_TEST_DHRY=m
|
CONFIG_TEST_DHRY=m
|
||||||
CONFIG_TEST_MIN_HEAP=m
|
CONFIG_TEST_MIN_HEAP=m
|
||||||
CONFIG_TEST_DIV64=m
|
CONFIG_TEST_DIV64=m
|
||||||
|
CONFIG_TEST_MULDIV64=m
|
||||||
CONFIG_REED_SOLOMON_TEST=m
|
CONFIG_REED_SOLOMON_TEST=m
|
||||||
CONFIG_ATOMIC64_SELFTEST=m
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
|
@ -566,6 +566,7 @@ CONFIG_KUNIT_ALL_TESTS=m
|
|||||||
CONFIG_TEST_DHRY=m
|
CONFIG_TEST_DHRY=m
|
||||||
CONFIG_TEST_MIN_HEAP=m
|
CONFIG_TEST_MIN_HEAP=m
|
||||||
CONFIG_TEST_DIV64=m
|
CONFIG_TEST_DIV64=m
|
||||||
|
CONFIG_TEST_MULDIV64=m
|
||||||
CONFIG_REED_SOLOMON_TEST=m
|
CONFIG_REED_SOLOMON_TEST=m
|
||||||
CONFIG_ATOMIC64_SELFTEST=m
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
|
@ -567,6 +567,7 @@ CONFIG_KUNIT_ALL_TESTS=m
|
|||||||
CONFIG_TEST_DHRY=m
|
CONFIG_TEST_DHRY=m
|
||||||
CONFIG_TEST_MIN_HEAP=m
|
CONFIG_TEST_MIN_HEAP=m
|
||||||
CONFIG_TEST_DIV64=m
|
CONFIG_TEST_DIV64=m
|
||||||
|
CONFIG_TEST_MULDIV64=m
|
||||||
CONFIG_REED_SOLOMON_TEST=m
|
CONFIG_REED_SOLOMON_TEST=m
|
||||||
CONFIG_ATOMIC64_SELFTEST=m
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
|
@ -28,10 +28,8 @@
|
|||||||
#define NR_IRQS 32
|
#define NR_IRQS 32
|
||||||
#elif defined(CONFIG_APOLLO)
|
#elif defined(CONFIG_APOLLO)
|
||||||
#define NR_IRQS 24
|
#define NR_IRQS 24
|
||||||
#elif defined(CONFIG_HP300)
|
#else /* CONFIG_HP300 etc. */
|
||||||
#define NR_IRQS 8
|
#define NR_IRQS 8
|
||||||
#else
|
|
||||||
#define NR_IRQS 0
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_M68020) || defined(CONFIG_M68030) || \
|
#if defined(CONFIG_M68020) || defined(CONFIG_M68030) || \
|
||||||
|
@ -93,8 +93,8 @@ struct pcc_regs {
|
|||||||
#define M147_SCC_B_ADDR 0xfffe3000
|
#define M147_SCC_B_ADDR 0xfffe3000
|
||||||
#define M147_SCC_PCLK 5000000
|
#define M147_SCC_PCLK 5000000
|
||||||
|
|
||||||
#define MVME147_IRQ_SCSI_PORT (IRQ_USER+0x45)
|
#define MVME147_IRQ_SCSI_PORT (IRQ_USER + 5)
|
||||||
#define MVME147_IRQ_SCSI_DMA (IRQ_USER+0x46)
|
#define MVME147_IRQ_SCSI_DMA (IRQ_USER + 6)
|
||||||
|
|
||||||
/* SCC interrupts, for MVME147 */
|
/* SCC interrupts, for MVME147 */
|
||||||
|
|
||||||
|
@ -5,16 +5,8 @@
|
|||||||
|
|
||||||
extra-y += vmlinux.lds
|
extra-y += vmlinux.lds
|
||||||
|
|
||||||
obj-$(CONFIG_AMIGA) := head.o
|
obj-$(CONFIG_MMU_MOTOROLA) := head.o
|
||||||
obj-$(CONFIG_ATARI) := head.o
|
obj-$(CONFIG_SUN3) := sun3-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-y += entry.o irq.o module.o process.o ptrace.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
|
obj-y += setup.o signal.o sys_m68k.o syscalltable.o time.o traps.o
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
#include <asm/setup.h>
|
#include <asm/setup.h>
|
||||||
|
|
||||||
|
|
||||||
|
#include "../mvme147/mvme147.h"
|
||||||
#include "../mvme16x/mvme16x.h"
|
#include "../mvme16x/mvme16x.h"
|
||||||
|
|
||||||
asmlinkage void __init debug_cons_nputs(const char *s, unsigned n);
|
asmlinkage void __init debug_cons_nputs(const char *s, unsigned n);
|
||||||
@ -22,7 +23,9 @@ static void __ref debug_cons_write(struct console *c,
|
|||||||
{
|
{
|
||||||
#if !(defined(CONFIG_SUN3) || defined(CONFIG_M68000) || \
|
#if !(defined(CONFIG_SUN3) || defined(CONFIG_M68000) || \
|
||||||
defined(CONFIG_COLDFIRE))
|
defined(CONFIG_COLDFIRE))
|
||||||
if (MACH_IS_MVME16x)
|
if (MACH_IS_MVME147)
|
||||||
|
mvme147_scc_write(c, s, n);
|
||||||
|
else if (MACH_IS_MVME16x)
|
||||||
mvme16x_cons_write(c, s, n);
|
mvme16x_cons_write(c, s, n);
|
||||||
else
|
else
|
||||||
debug_cons_nputs(s, n);
|
debug_cons_nputs(s, n);
|
||||||
|
@ -249,7 +249,11 @@ void __init setup_arch(char **cmdline_p)
|
|||||||
process_uboot_commandline(&m68k_command_line[0], CL_SIZE);
|
process_uboot_commandline(&m68k_command_line[0], CL_SIZE);
|
||||||
*cmdline_p = m68k_command_line;
|
*cmdline_p = m68k_command_line;
|
||||||
memcpy(boot_command_line, *cmdline_p, CL_SIZE);
|
memcpy(boot_command_line, *cmdline_p, CL_SIZE);
|
||||||
|
/*
|
||||||
|
* Initialise the static keys early as they may be enabled by the
|
||||||
|
* cpufeature code and early parameters.
|
||||||
|
*/
|
||||||
|
jump_label_init();
|
||||||
parse_early_param();
|
parse_early_param();
|
||||||
|
|
||||||
switch (m68k_machtype) {
|
switch (m68k_machtype) {
|
||||||
|
@ -62,7 +62,7 @@ void timer_heartbeat(void)
|
|||||||
}
|
}
|
||||||
#endif /* CONFIG_HEARTBEAT */
|
#endif /* CONFIG_HEARTBEAT */
|
||||||
|
|
||||||
#ifdef CONFIG_M68KCLASSIC
|
#if defined(CONFIG_M68KCLASSIC) || defined(CONFIG_SUN3)
|
||||||
/* machine dependent timer functions */
|
/* machine dependent timer functions */
|
||||||
int (*mach_hwclk) (int, struct rtc_time*);
|
int (*mach_hwclk) (int, struct rtc_time*);
|
||||||
EXPORT_SYMBOL(mach_hwclk);
|
EXPORT_SYMBOL(mach_hwclk);
|
||||||
@ -149,7 +149,7 @@ static int __init rtc_init(void)
|
|||||||
|
|
||||||
module_init(rtc_init);
|
module_init(rtc_init);
|
||||||
#endif /* CONFIG_RTC_DRV_GENERIC */
|
#endif /* CONFIG_RTC_DRV_GENERIC */
|
||||||
#endif /* CONFIG M68KCLASSIC */
|
#endif /* CONFIG_M68KCLASSIC || SUN3 */
|
||||||
|
|
||||||
void __init time_init(void)
|
void __init time_init(void)
|
||||||
{
|
{
|
||||||
|
@ -383,7 +383,7 @@ static inline void bus_error030 (struct frame *fp)
|
|||||||
fp->ptregs.format == 0xa ? fp->ptregs.pc + 4 : fp->un.fmtb.baddr);
|
fp->ptregs.format == 0xa ? fp->ptregs.pc + 4 : fp->un.fmtb.baddr);
|
||||||
if (ssw & DF)
|
if (ssw & DF)
|
||||||
pr_debug("Data %s fault at %#010lx in %s (pc=%#lx)\n",
|
pr_debug("Data %s fault at %#010lx in %s (pc=%#lx)\n",
|
||||||
ssw & RW ? "read" : "write",
|
str_read_write(ssw & RW),
|
||||||
fp->un.fmtb.daddr,
|
fp->un.fmtb.daddr,
|
||||||
space_names[ssw & DFC], fp->ptregs.pc);
|
space_names[ssw & DFC], fp->ptregs.pc);
|
||||||
|
|
||||||
@ -419,7 +419,7 @@ static inline void bus_error030 (struct frame *fp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
pr_err("Data %s fault at %#010lx in %s (pc=%#lx)\n",
|
pr_err("Data %s fault at %#010lx in %s (pc=%#lx)\n",
|
||||||
ssw & RW ? "read" : "write",
|
str_read_write(ssw & RW),
|
||||||
fp->un.fmtb.daddr,
|
fp->un.fmtb.daddr,
|
||||||
space_names[ssw & DFC], fp->ptregs.pc);
|
space_names[ssw & DFC], fp->ptregs.pc);
|
||||||
}
|
}
|
||||||
@ -455,7 +455,7 @@ static inline void bus_error030 (struct frame *fp)
|
|||||||
pr_debug("*** unexpected busfault type=%#04x\n",
|
pr_debug("*** unexpected busfault type=%#04x\n",
|
||||||
buserr_type);
|
buserr_type);
|
||||||
pr_debug("invalid %s access at %#lx from pc %#lx\n",
|
pr_debug("invalid %s access at %#lx from pc %#lx\n",
|
||||||
!(ssw & RW) ? "write" : "read", addr,
|
str_read_write(ssw & RW), addr,
|
||||||
fp->ptregs.pc);
|
fp->ptregs.pc);
|
||||||
die_if_kernel ("Oops", &fp->ptregs, buserr_type);
|
die_if_kernel ("Oops", &fp->ptregs, buserr_type);
|
||||||
force_sig (SIGBUS);
|
force_sig (SIGBUS);
|
||||||
@ -514,7 +514,7 @@ static inline void bus_error030 (struct frame *fp)
|
|||||||
fp->ptregs.format == 0xa ? fp->ptregs.pc + 4 : fp->un.fmtb.baddr);
|
fp->ptregs.format == 0xa ? fp->ptregs.pc + 4 : fp->un.fmtb.baddr);
|
||||||
if (ssw & DF)
|
if (ssw & DF)
|
||||||
pr_debug("Data %s fault at %#010lx in %s (pc=%#lx)\n",
|
pr_debug("Data %s fault at %#010lx in %s (pc=%#lx)\n",
|
||||||
ssw & RW ? "read" : "write",
|
str_read_write(ssw & RW),
|
||||||
fp->un.fmtb.daddr,
|
fp->un.fmtb.daddr,
|
||||||
space_names[ssw & DFC], fp->ptregs.pc);
|
space_names[ssw & DFC], fp->ptregs.pc);
|
||||||
|
|
||||||
@ -548,7 +548,7 @@ static inline void bus_error030 (struct frame *fp)
|
|||||||
/* We might have an exception table for this PC */
|
/* We might have an exception table for this PC */
|
||||||
if (ssw & 4 && !search_exception_tables(fp->ptregs.pc)) {
|
if (ssw & 4 && !search_exception_tables(fp->ptregs.pc)) {
|
||||||
pr_err("Data %s fault at %#010lx in %s (pc=%#lx)\n",
|
pr_err("Data %s fault at %#010lx in %s (pc=%#lx)\n",
|
||||||
ssw & RW ? "read" : "write",
|
str_read_write(ssw & RW),
|
||||||
fp->un.fmtb.daddr,
|
fp->un.fmtb.daddr,
|
||||||
space_names[ssw & DFC], fp->ptregs.pc);
|
space_names[ssw & DFC], fp->ptregs.pc);
|
||||||
goto buserr;
|
goto buserr;
|
||||||
@ -564,7 +564,7 @@ static inline void bus_error030 (struct frame *fp)
|
|||||||
mmusr);
|
mmusr);
|
||||||
} else if (mmusr & (MMU_B|MMU_L|MMU_S)) {
|
} else if (mmusr & (MMU_B|MMU_L|MMU_S)) {
|
||||||
pr_err("invalid %s access at %#lx from pc %#lx\n",
|
pr_err("invalid %s access at %#lx from pc %#lx\n",
|
||||||
!(ssw & RW) ? "write" : "read", addr,
|
str_read_write(ssw & RW), addr,
|
||||||
fp->ptregs.pc);
|
fp->ptregs.pc);
|
||||||
die_if_kernel("Oops",&fp->ptregs,mmusr);
|
die_if_kernel("Oops",&fp->ptregs,mmusr);
|
||||||
force_sig(SIGSEGV);
|
force_sig(SIGSEGV);
|
||||||
@ -575,7 +575,7 @@ static inline void bus_error030 (struct frame *fp)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
pr_err("weird %s access at %#lx from pc %#lx (ssw is %#x)\n",
|
pr_err("weird %s access at %#lx from pc %#lx (ssw is %#x)\n",
|
||||||
!(ssw & RW) ? "write" : "read", addr,
|
str_read_write(ssw & RW), addr,
|
||||||
fp->ptregs.pc, ssw);
|
fp->ptregs.pc, ssw);
|
||||||
asm volatile ("ptestr #1,%1@,#0\n\t"
|
asm volatile ("ptestr #1,%1@,#0\n\t"
|
||||||
"pmove %%psr,%0"
|
"pmove %%psr,%0"
|
||||||
@ -991,7 +991,7 @@ static void bad_super_trap(struct frame *fp)
|
|||||||
fp->ptregs.pc + 4 : fp->un.fmtb.baddr);
|
fp->ptregs.pc + 4 : fp->un.fmtb.baddr);
|
||||||
if (ssw & DF)
|
if (ssw & DF)
|
||||||
pr_err("Data %s fault at %#010lx in %s (pc=%#lx)\n",
|
pr_err("Data %s fault at %#010lx in %s (pc=%#lx)\n",
|
||||||
ssw & RW ? "read" : "write",
|
str_read_write(ssw & RW),
|
||||||
fp->un.fmtb.daddr, space_names[ssw & DFC],
|
fp->un.fmtb.daddr, space_names[ssw & DFC],
|
||||||
fp->ptregs.pc);
|
fp->ptregs.pc);
|
||||||
}
|
}
|
||||||
|
@ -32,9 +32,10 @@
|
|||||||
#include <asm/mvme147hw.h>
|
#include <asm/mvme147hw.h>
|
||||||
#include <asm/config.h>
|
#include <asm/config.h>
|
||||||
|
|
||||||
|
#include "mvme147.h"
|
||||||
|
|
||||||
static void mvme147_get_model(char *model);
|
static void mvme147_get_model(char *model);
|
||||||
extern void mvme147_sched_init(void);
|
static void __init mvme147_sched_init(void);
|
||||||
extern int mvme147_hwclk (int, struct rtc_time *);
|
extern int mvme147_hwclk (int, struct rtc_time *);
|
||||||
extern void mvme147_reset (void);
|
extern void mvme147_reset (void);
|
||||||
|
|
||||||
@ -123,7 +124,7 @@ static irqreturn_t mvme147_timer_int (int irq, void *dev_id)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void mvme147_sched_init (void)
|
static void __init mvme147_sched_init(void)
|
||||||
{
|
{
|
||||||
if (request_irq(PCC_IRQ_TIMER1, mvme147_timer_int, IRQF_TIMER,
|
if (request_irq(PCC_IRQ_TIMER1, mvme147_timer_int, IRQF_TIMER,
|
||||||
"timer 1", NULL))
|
"timer 1", NULL))
|
||||||
@ -185,3 +186,32 @@ int mvme147_hwclk(int op, struct rtc_time *t)
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void scc_delay(void)
|
||||||
|
{
|
||||||
|
__asm__ __volatile__ ("nop; nop;");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void scc_write(char ch)
|
||||||
|
{
|
||||||
|
do {
|
||||||
|
scc_delay();
|
||||||
|
} while (!(in_8(M147_SCC_A_ADDR) & BIT(2)));
|
||||||
|
scc_delay();
|
||||||
|
out_8(M147_SCC_A_ADDR, 8);
|
||||||
|
scc_delay();
|
||||||
|
out_8(M147_SCC_A_ADDR, ch);
|
||||||
|
}
|
||||||
|
|
||||||
|
void mvme147_scc_write(struct console *co, const char *str, unsigned int count)
|
||||||
|
{
|
||||||
|
unsigned long flags;
|
||||||
|
|
||||||
|
local_irq_save(flags);
|
||||||
|
while (count--) {
|
||||||
|
if (*str == '\n')
|
||||||
|
scc_write('\r');
|
||||||
|
scc_write(*str++);
|
||||||
|
}
|
||||||
|
local_irq_restore(flags);
|
||||||
|
}
|
||||||
|
6
arch/m68k/mvme147/mvme147.h
Normal file
6
arch/m68k/mvme147/mvme147.h
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||||
|
|
||||||
|
struct console;
|
||||||
|
|
||||||
|
/* config.c */
|
||||||
|
void mvme147_scc_write(struct console *co, const char *str, unsigned int count);
|
Loading…
Reference in New Issue
Block a user