[RFC PATCH] m68k: nommu: Fix behaviour of io macros on non-CF
From: Daniel Palmer
Date: Fri Apr 03 2026 - 22:48:25 EST
Currently for 68000 readl() and friends are broken in that they
return the value from the bus as-is but should be reading a little
endian value and swapping it to big endian.
This was found using virtio-mmio on a 68000 virt machine. virtio-mmio
is little endian even if the emulated machine is big endian. This works
for MMU m68k because the io macros do what is expected there, but if
the kernel was built for nommu it breaks.
Potentially this will break some stuff for nommu non-CF m68k users
but since there are probably 2 or 3 of us in the world I think we
can work it out.
Suggested-by: Arnd Bergmann <arnd@xxxxxxxxxx>
Link: https://lore.kernel.org/lkml/ada73dc9-edf5-458c-8849-9f9db23ff304@xxxxxxxxxxxxxxxx/
Signed-off-by: Daniel Palmer <daniel@xxxxxxxx>
---
arch/m68k/include/asm/io_no.h | 9 ---------
1 file changed, 9 deletions(-)
diff --git a/arch/m68k/include/asm/io_no.h b/arch/m68k/include/asm/io_no.h
index 516371d5587a..c39db8798ef2 100644
--- a/arch/m68k/include/asm/io_no.h
+++ b/arch/m68k/include/asm/io_no.h
@@ -96,15 +96,6 @@ static inline void writel(u32 value, volatile void __iomem *addr)
__raw_writel(swab32(value), addr);
}
-#else
-
-#define readb __raw_readb
-#define readw __raw_readw
-#define readl __raw_readl
-#define writeb __raw_writeb
-#define writew __raw_writew
-#define writel __raw_writel
-
#endif /* IOMEMBASE */
#if defined(CONFIG_PCI)
--
2.51.0