//go:nosplit
func newproc(siz int32, fn *funcval) {
argp := add(unsafe.Pointer(&fn), ptrSize)
- if thechar == '5' {
+ if hasLinkRegister {
argp = add(argp, ptrSize) // skip caller's saved LR
}
sp -= 4 * regSize // extra space in case of reads slightly beyond frame
sp -= uintptr(siz)
memmove(unsafe.Pointer(sp), unsafe.Pointer(argp), uintptr(narg))
- if thechar == '5' {
+ if hasLinkRegister {
// caller's LR
sp -= ptrSize
*(*unsafe.Pointer)(unsafe.Pointer(sp)) = nil