Can gp / x3 be used as an ordinary temporary?
It should not. The psABI marks it unallocatable, and normal procedures should not modify it.
gp is the global pointer in the psABI and is marked unallocatable. Normal procedures should not modify gp; the standard ABI says this because signal handlers and similar runtime contexts may rely on its value.
gp is marked unallocatable by the psABI. Normal procedures should not modify it because signal handlers, runtimes, or platform conventions may rely on its value.
gp / x3 is marked unallocatable by the psABI. Normal procedures should not modify it; it is not a normal caller-saved or callee-saved choice.
The psABI marks gp as unallocatable.
The psABI says normal procedures should not modify gp because signal handlers may rely on it.
It is not a normal caller-saved/callee-saved choice; it should not be allocated to ordinary code.
# Do not borrow gp in a normal function
# If the platform ABI assigns gp a purpose, follow that platform ABI
# Use t0-t6 for temporaries, or save other registers according to the calling conventionIt should not. The psABI marks it unallocatable, and normal procedures should not modify it.
Neither in the usual sense; it is unallocatable, so ordinary code should not borrow it.