ILP32
English

ILP32Wrt

Router firmware based on OpenWrt 25.12.6 with an AArch64 ILP32 user land (musl 1.2.5) and an ILP32-capable kernel.

What it is

Devices

TargetStatus
armsr/armv8 (QEMU, virtual machines)tested in QEMU
mediatek/filogic (OpenWrt One)tested on hardware, including sysupgrade between ILP32 and LP64
bcm27xx/bcm2710 (Raspberry Pi 3 B+)tested on hardware: boot, Ethernet, Wi-Fi, LuCI (factory flashing and sysupgrade not tested)
other mediatek/filogic routers, Raspberry Pi 4 and 5images built, not tested on hardware
other targets (Qualcomm, Rockchip, …)not built yet

What ILP32Wrt adds

Besides the ILP32 kernel, musl and toolchain, ILP32Wrt will build the busiest packages (ucode, lucihttp, json-c) with clang 22 and our patches from the next release (v25.12.6-ilp32.3) on; everything else stays GCC 14.3. The patches fold address offsets into the addressing modes and keep pointer arithmetic from being widened to 64 bits, so these packages run faster on ILP32.

OpenWrt One, same treeLP64 (GCC)ILP32 (GCC)ILP32Wrt (busiest packages with clang)
firewall reload, 200 rules2.58 s2.84 s (+10%)2.63 s (+2%)
20 LuCI requests1.73 s1.81 s (+5%)1.76 s (+2%)
user-space memory (PSS)38.3 MB28.9 MB28.9 MB (-24.6%)

Compared with the same tree built for LP64 with GCC 14.3, not with the official OpenWrt image. LP64 with clang has not been measured. When you build the images yourself, you can build other packages with clang too, for example python3.

Source and images

Source and build instructions: github.com/ilp32-a64/openwrt-ilp32. Images will be published there as experimental pre-releases; there is no package feed yet.

Report your device

Tried it on your device? Please open an issue in the repository with the device report form, whether it boots or not.

ILP32Wrt is not affiliated with OpenWrt. OpenWrt is a registered trademark owned by Software Freedom Conservancy (SFC); see openwrt.org.