Hi Experts,
I have binaries built for armv7 architecture, without rebuilding binaries can I run on armv8?. I think its possible, but wanted confirm is there any limitation?
Thanks,
Veeranna
It depends on the type of binary.
For something like a Linux application, then yes. ARMv8-A includes AArch32, which provides backwards compatibility with ARMv7-A. There are some limitations, such as the SWP instruction no longer being supported. But these are types of things that applications are unlikely to be using (and were deprecated in ARMv7).
For baremetal, you have all the usual problems of using a binary from one platform on another. So you are going to need to do some degree of porting in most cases.
Hi Martin,
can you please tell which register to modify in El1 to indicate El0 is AArch32 bit mode (location of register width bit's)?
If EL1 is using AArch64, to get to EL0 you need to perform an exception return. The Execution state of EL0 is set by the SPSR_EL1 value when you perform the exception return. If SPSR_EL1[4:0] ==b00000, EL0 uses AArch64. If SPSR_EL1[4:0]==b10000, EL0 uses AArch32
Hi,
When i run a linux exe built for armv7 on a debian9 (armv8) it doesn't work and shows the message: "No such file or directory". I tried to install the libraries for armhf but no difference. Any ideas please?
Thank you.
ARMv7 is 32 bit and ARMv8 is 64 bit and the issue is expected. Compile your binary for ARMv8 and use it.
Doesn't ARMv8 provides backward compatibility with ARMv7? If so what interpreter to add? I tried with armhf but no effect.
ARMv8-A contains the AArch32 "profile", but you need to be in the respective mode. So if the CPU is set to execute AArch64 it does not understand 32 bit code (as for ARMv7).So in case of Linux, I guess the bootloader has to know this already.
Can this be done without running an Armv7 installation or does the whole CPU need to be set into armv7 mode?