I am looking to port a highly optimized crypto ASM implementation to Go ASM. The only documentation on Go Arm Assembly is the Quick Guide and it mentioned the following:
The ASM I am looking to port uses R10
and R11
so my question is the following:
go:nosplit
is used to stop preemptive behavior)You should not touch R10
in case e.g. your code is preempted or a panic occurs. I believe the guide is pretty clear on that.
R11
is used by the linker to synthesise some instructions, e.g. references to global variables. Best check if R11
is used by assembling and then disassembling the code. In the disassembly, any reference to R11
introduced by the linker should be visible.