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
- Only user space is ILP32; the kernel, TF-A, U-Boot and GRUB stay 64-bit.
- Packages get an
_ilp32architecture suffix (for exampleaarch64_cortex-a53_ilp32), so ILP32 and LP64 packages never mix. - Pointer authentication, BTI and SVE can stay on where the target enables them.
Devices
| Target | Status |
|---|---|
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 5 | images 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 tree | LP64 (GCC) | ILP32 (GCC) | ILP32Wrt (busiest packages with clang) |
|---|---|---|---|
| firewall reload, 200 rules | 2.58 s | 2.84 s (+10%) | 2.63 s (+2%) |
| 20 LuCI requests | 1.73 s | 1.81 s (+5%) | 1.76 s (+2%) |
| user-space memory (PSS) | 38.3 MB | 28.9 MB | 28.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.