Hi,
We have a AARCH64 verification platform (FPGA) which is built without NEON unit. Is there any prebuilt AARCH64 rootfs (busybox, debian ...) that can be used on such platform? Or is it possible to build an AARCH64 rootfs with -mgeneral-regs-only flag to avoid using NEON unit? Thanks.
Shawn
On Thu, Jan 7, 2016 at 5:09 PM, Shawn Guo shawn.guo@linaro.org wrote:
We have a AARCH64 verification platform (FPGA) which is built without NEON unit. Is there any prebuilt AARCH64 rootfs (busybox, debian ...) that can be used on such platform? Or is it possible to build an AARCH64 rootfs with -mgeneral-regs-only flag to avoid using NEON unit?
A linux root fs without FP/ASIMD instructions would require compiler support to generate soft-float code. ARM has not defined any soft-float ABI for aarch64, and apparently has no intention to do so, so there is no soft-float support in gcc for aarch64. My understanding is that this is partly because the ARMv8-A profile requires FP/ASIMD instruction support, and partly because ARM wants to avoid (or at least delay) the multilib problem that they already have on ARMv7.
-mgeneral-regs-only does not help here. It can only work for code that has no FP operations. Glibc has FP operations, and I don't think that it can be built without them. This option is only intended for some special purpose code that needs to avoid using FP registers because they haven't been initialized yet or because it would be too expensive to save/restore them. It is primarily intended to be used by bootloaders and kernels and similar low level codes.
There are a few other possible options here, but not any easy and/or good ones. We could add kernel support to emulate FP/ASIMD instructions. I think this was done on x86 so that linux could run on x86 parts without an FPU. This is potentially a lot of work. You could perhaps use a soft-float ARMv7 root fs, if your part can execute aarch32 instructions, but that doesn't help if you want to test aarch64 support. Or we could argue with ARM and try to get them to change their stance on soft-float ABI support, but that could take a while, and may not be successful.
Jim
Hi Jim,
On Sat, Jan 9, 2016 at 12:47 AM, Jim Wilson jim.wilson@linaro.org wrote:
On Thu, Jan 7, 2016 at 5:09 PM, Shawn Guo shawn.guo@linaro.org wrote:
We have a AARCH64 verification platform (FPGA) which is built without NEON unit. Is there any prebuilt AARCH64 rootfs (busybox, debian ...) that can be used on such platform? Or is it possible to build an AARCH64 rootfs with -mgeneral-regs-only flag to avoid using NEON unit?
A linux root fs without FP/ASIMD instructions would require compiler support to generate soft-float code. ARM has not defined any soft-float ABI for aarch64, and apparently has no intention to do so, so there is no soft-float support in gcc for aarch64. My understanding is that this is partly because the ARMv8-A profile requires FP/ASIMD instruction support, and partly because ARM wants to avoid (or at least delay) the multilib problem that they already have on ARMv7.
Thanks a lot for your insight on this.
-mgeneral-regs-only does not help here. It can only work for code that has no FP operations. Glibc has FP operations, and I don't think that it can be built without them. This option is only intended for some special purpose code that needs to avoid using FP registers because they haven't been initialized yet or because it would be too expensive to save/restore them. It is primarily intended to be used by bootloaders and kernels and similar low level codes.
Ah, yes, that's why we have seen that the flag works with U-Boot and Linux kernel.
There are a few other possible options here, but not any easy and/or good ones. We could add kernel support to emulate FP/ASIMD instructions. I think this was done on x86 so that linux could run on x86 parts without an FPU. This is potentially a lot of work. You could perhaps use a soft-float ARMv7 root fs, if your part can execute aarch32 instructions, but that doesn't help if you want to test aarch64 support. Or we could argue with ARM and try to get them to change their stance on soft-float ABI support, but that could take a while, and may not be successful.
Your comments are extremely helpful and much appreciated. We're now able to boot into user space on this platform using an ARMv7 softfp rootfs, and it serves our testing purpose well for now.
Thanks, Shawn