[PATCH 03/13] ARM: remove riscpc
Bart Van Assche
bvanassche at acm.org
Wed Sep 9 09:42:53 PDT 2026
On 9/8/26 8:27 AM, Arnd Bergmann wrote:
> The Acorn Risc PC is the oldest still support Arm machine in the kernel,
> originally shipped with an ARMv3 ARM610 support in 1994, it later allowed
> faster StrongARM CPUs.
>
> The main limitation here is the CPU bus that does not allow 16-bit
> wide data transfers and hence requires the kernel to be built with the
> -march=armv3 compiler option that was discontinued in gcc-9.
>
> As gcc-8 is barely supported for compiling the kernel, this one
> will not see another LTS kernel release, so remove it now.
If this patch has to be reposted, here is the feedback of my AI coding
assistant (based on an LLM and hence may be wrong):
----------------------------------------------------------------------
Overview
--------
This patch removes the Acorn RiscPC platform (ARCH_RPC), the oldest
32-bit ARM machine supported in mainline Linux (originally ARMv3 ARM610,
later StrongARM SA-110). Because RiscPC hardware requires -march=armv3
(discontinued in GCC 9) due to bus limitations, deprecating and removing
it paves the way to clean out legacy ARMv3 support from the kernel.
Removing RiscPC also represents a major architectural milestone for
arch/arm: with SA-1100 (patch 1), Footbridge (patch 2), and RiscPC
(patch 3) removed, COMMON_CLK, SPARSE_IRQ, and USE_OF (Device Tree)
become unconditionally selected for all 32-bit ARM targets, and legacy
headers mach/io.h and mach/memory.h are eliminated.
Overall, this is a very welcome cleanup, but there are a few missed
references, orphaned symbols, and stale comments that should be addressed.
Issues & Observations
---------------------
1. Missed arch/arm/Makefile cleanup
Patch 03 deletes the entire directory arch/arm/mach-rpc/, but does not
touch arch/arm/Makefile. As a result, two orphaned entries remain:
makefile
machine-$(CONFIG_ARCH_RPC) += rpc
machdirs-$(CONFIG_ARCH_RPC) += arch/arm/mach-rpc
Furthermore, machdirs-$(CONFIG_ARCH_RPC) was the very last user of
machdirs- in arch/arm/Makefile (after Footbridge and SA-1100 are removed
in patches 1 & 2):
makefile
# legacy platforms provide their own mach/*.h headers globally,
# these three are mutually exclusive
machdirs-$(CONFIG_ARCH_FOOTBRIDGE) += arch/arm/mach-footbridge
machdirs-$(CONFIG_ARCH_RPC) += arch/arm/mach-rpc
machdirs-$(CONFIG_ARCH_SA1100) += arch/arm/mach-sa1100
KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%/include,$(machdirs-y))
Once RiscPC is gone, the entire machdirs- inclusion block can and should
be removed from arch/arm/Makefile.
2. Missed ARCH_ACORN reference in lib/fonts/Kconfig
The patch deletes config ARCH_ACORN from arch/arm/Kconfig and removes
#ifdef CONFIG_ARCH_ACORN from
lib/fonts/font_acorn_8x8.c
, but missed
lib/fonts/Kconfig:74
:
kconfig
config FONT_ACORN_8x8
bool "Acorn console 8x8 font" if FONTS
depends on FRAMEBUFFER_CONSOLE || DRM_PANIC
default y if !SPARC && !FONTS && ARM && ARCH_ACORN
Because ARCH_ACORN is removed, this default can never trigger and the
reference should be cleaned up.
3. Orphaned ARCH_RPC reference in arch/arm/mm/Kconfig
In
arch/arm/mm/Kconfig:281-282
:
kconfig
config CPU_SA110
bool
select CPU_32v3 if ARCH_RPC
select CPU_32v4 if !ARCH_RPC
Since ARCH_RPC is removed, select CPU_32v3 if ARCH_RPC references a
non-existent symbol. If CPU_SA110 remains temporarily (before the
architectural cleanup in 7.5), this should be simplified to select CPU_32v4.
4. Dead code in arch/arm/kernel/atags_compat.c
With CONFIG_ARCH_ACORN removed from arch/arm/Kconfig, two blocks in
arch/arm/kernel/atags_compat.c
are now dead code:
Lines 150–157: #ifdef CONFIG_ARCH_ACORN / if (machine_is_riscpc())
memory bank tagging.
Lines 186–194: #ifdef CONFIG_ARCH_ACORN ATAG_ACORN translation.
These blocks should be removed as part of this patch.
5. Stale comments
arch/arm/include/asm/io.h:207-209
:
c
/*
* Now, pick up the machine-defined IO definitions
*/
#if IS_ENABLED(CONFIG_PCMCIA) || defined(CONFIG_PCI)
CONFIG_NEED_MACH_IO_H and #include <mach/io.h> were removed, leaving
this comment describing generic PCI/PCMCIA I/O limits.
arch/arm/boot/bootp/Makefile:21
: # guess an initrd location if possible is left dangling right before
ifdef INITRD_OFFSET after all initrd_offset-$(CONFIG_...) logic has been
stripped out.
6. Floppy driver & arch/arm/include/asm/floppy.h status
The patch removes the ARM MFM AND FLOPPY DRIVERS entry from MAINTAINERS:
diff
-ARM MFM AND FLOPPY DRIVERS
-M: Ian Molton <spyro at f2s.com>
-S: Maintained
-F: arch/arm/include/asm/floppy.h
-F: arch/arm/mach-rpc/floppydma.S
While
floppydma.S
was deleted,
arch/arm/include/asm/floppy.h
was left in the tree.
On ARM, floppy support requires ARCH_MAY_HAVE_PC_FDC, which was selected
only by Footbridge and RiscPC.
With both gone, no ARM board selects ARCH_MAY_HAVE_PC_FDC.
Furthermore, asm/floppy.h references IRQ_FLOPPYDISK and DMA_FLOPPY,
which no longer exist on ARM.
Either
arch/arm/include/asm/floppy.h
and config ARCH_MAY_HAVE_PC_FDC in arch/arm/Kconfig should be deleted
in this patch, or noted if intentionally deferred to the 7.5 driver cleanup.
7. Good changes & verification
block/partitions/Kconfig: Dropping default y if ARCH_ACORN while keeping
ACORN_PARTITION available under PARTITION_ADVANCED is correct; users can
still inspect/mount Acorn media on modern architectures.
drivers/tty/vt/keyboard.c: Clean removal of !defined(CONFIG_ARCH_RPC)
from the raw keyboard scan handler.
Elimination of NEED_MACH_IO_H and NEED_MACH_MEMORY_H: Very clean removal
across arch/arm/Kconfig, arch/arm/include/asm/io.h,
arch/arm/include/asm/memory.h, and arch/arm/mm/mmu.c.
Minor Typo in Commit Message
text
The Acorn Risc PC is the oldest still support Arm machine in the kernel,
originally shipped with an ARMv3 ARM610 support in 1994, it later allowed
faster StrongARM CPUs.
"oldest still support Arm machine" -> "oldest still supported Arm machine"
"with an ARMv3 ARM610 support" -> "with ARMv3 ARM610 support" or "with
an ARMv3 ARM610 CPU"
More information about the linux-arm-kernel
mailing list