// Copyright 2013 The Go Authors. All rights reserved. | |
// Use of this source code is governed by a BSD-style | |
// license that can be found in the LICENSE file. | |
// +build amd64 amd64p32 386 | |
package runtime | |
import ( | |
"runtime/internal/sys" | |
"unsafe" | |
) | |
// adjust Gobuf as if it executed a call to fn with context ctxt | |
// and then did an immediate gosave. | |
func gostartcall(buf *gobuf, fn, ctxt unsafe.Pointer) { | |
sp := buf.sp | |
if sys.RegSize > sys.PtrSize { | |
sp -= sys.PtrSize | |
*(*uintptr)(unsafe.Pointer(sp)) = 0 | |
} | |
sp -= sys.PtrSize | |
*(*uintptr)(unsafe.Pointer(sp)) = buf.pc | |
buf.sp = sp | |
buf.pc = uintptr(fn) | |
buf.ctxt = ctxt | |
} |