Curious, is porting complex C++ projects to arm64 just a matter of updating build/CI systems or does it actually involve changing core code and adding branches if (x64) {} ... if (arm64) {}.
Take a look at https://github.com/torvalds/linux/tree/master/arch/arm64
For an OS it is different, you need to reimplement many parts: bootloader, drivers, task scheduler, virtual memory...
x86 and ARM don't same the same memory consistency model, so while managed languages do somehow protect their users from the differences, languages like C++ do expose it by default (unless you make use of the C++11 memory model APIs[0]).
So it depends how clever the lock-free kernel datastructure were written and other memory access assumptions.
[0] - https://en.cppreference.com/w/cpp/language/memory_model