ARM CPU Architecture#

There are a number of considerations when porting Linux applications from x86_64 to ARM:

  • The instruction set differs. In particular, assembly- or compiler-intrinsics-based SIMD code needs to use the appropriate ARM extensions instead (See CPU Instruction Extensions).

  • The memory ordering differs. Memory accesses between threads within the same process are weakly ordered on ARM, while x86_64 implements total store order. Correctly written multi-threaded programs behave the same on both architectures. But faulty code can result in unexpected behavior when porting to ARM. See also ARM Memory Ordering.