arm64 / aarch64 compatibility
from ExtremeDullard@lemmy.sdf.org to linux@lemmy.ml on 24 Aug 2024 08:09
https://lemmy.sdf.org/post/21360062

I’m about to step into the wonderful world of ARM Linux. I work with ARM32 as an embedded developer profesionally (Cortex-M3 specifically) so I’m not a complete newbie. But I’ve never used ARM64, and I’ve never used it with a desktop OS. So I’m doing my research, as one does, to know roughly what I’ll be dealing with.

I have a few questions regarding backward compatibility and architecture-naming. Maybe you specialists out there could shed some light.

From what I could find, I understand the following:

Do I understand correctly?

If I do create some software that relies on extended ARMv8 or ARMv9 features and I want to release my software as a package, how should I name the package’s architecture? Is there even a standard for that? Will it get rejected by the package managers of the few ARM distros out there, or will it be recognized as a subset of the wider arm64 / aarch64 architecture?

#linux

threaded - newest

TCB13@lemmy.world on 24 Aug 2024 09:37 next collapse

Yes, you did. “aarch64” and “arm64” are the same thing. AArch64 is the official name for the 64-bit ARM architecture, but some people prefer to call it “ARM64” as a continuation of 32-bit ARM that is also known as “armhf” and “armv7h”.

stsquad@lemmy.ml on 24 Aug 2024 09:43 collapse

Pretty much. From v8.0 onwards all the extra features are indicated by id flags. Stuff that is relevant to kernel mode will generally be automatically handled by the kernel patching itself on booting up and in user space some libraries will select appropriately accelerated functions when the ISA extensions are probed. There are a bunch off advisory instructions encoded in the hint space that will be effectively NOPs on older hardware but will enhance execution if run on newer hardware.

If you want to play with newer instructions have a look at QEMUs “max” CPU.

ExtremeDullard@lemmy.sdf.org on 24 Aug 2024 16:08 collapse

Thanks!

libraries will select appropriately accelerated functions when the ISA extensions are probed.

Yeah okay, that sounds like how it’s always been done. I don’t know why I figured it would be any different with ARM. But that makes complete sense.