On Mon, Oct 7, 2024 at 6:35 PM Karl Chan <exxxxkc@xxxxxxxxxxxxxxx> wrote: > Also The original firmware from Linksys can only boot ARM32 kernels. > > As of now There seems to be no way to boot ARM64 kernels on those device. So this is a Cortex-A53 Aarch64 system running in ARM32 mode. So I got this interactive U-boot log from Karl showing how the attempt to boot an Aarch64 kernel manifests: CBT U-Boot ver: 3.2.08 ([IPQ5018].[SPF11.3].[CSU2]) ## Loading kernel from FIT Image at 44000000 ... Using 'standard' configuration Trying 'kernel' kernel subimage Description: Kernel Type: Kernel Image Compression: uncompressed Data Start: 0x440000a8 Data Size: 8249289 Bytes = 7.9 MiB Architecture: AArch64 OS: Linux Load Address: 0x41208000 Entry Point: 0x41208000 Verifying Hash Integrity ... OK (...) ## Loading ramdisk from FIT Image at 44000000 ... (...) ## Loading fdt from FIT Image at 44000000 ... (...) fdt_fixup_qpic: QPIC: unable to find node '/soc/qpic-nand@79b0000' Could not find PCI in device tree Using machid 0x8040001 from environment Starting kernel ... undefined instruction pc : [<41208004>] lr : [<4a921f8f>] reloc pc : [<41208004>] lr : [<4a921f8f>] sp : 4a822838 ip : 00000001 fp : 00000000 r10: 4a83b914 r9 : 4a822ea0 r8 : 00000000 r7 : 00000000 r6 : 41208000 r5 : 4a97d848 r4 : 00000000 r3 : 644d5241 r2 : 4a0ae000 r1 : 08040001 r0 : 00000000 Flags: nzCV IRQs off FIQs off Mode SVC_32 Resetting CPU ... resetting ... So perhaps someone knows how we can get around this. It seems to me the U-Boot is in 32bit mode and tries to just execute an Aarch64 binary and that doesn't work. What we need is a 32bit mode preamble that can switch the machine to Aarch64 and continue. I don't know *how* to do that, but I would *guess* a botched return from exception where you provide your own stack with the Aarch64 state hardcoded on it should do the job? The Aarch64 maintainers will know what to do. Surely it should be possible to add a little code snippet to do this somewhere in memory, and that in turn jumps to execute the actual Aarch64 kernel in Aarch64 mode? Yours, Linus Walleij