summaryrefslogtreecommitdiffstats
path: root/contrib/go/_std_1.26/src/runtime/sys_riscv64.go
blob: 65dc684c332066ee113521e1fdfd4db473a49b83 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Copyright 2016 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.

package runtime

import (
	"unsafe"

	"internal/abi"
	"internal/runtime/sys"
)

// 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) {
	if buf.lr != 0 {
		throw("invalid use of gostartcall")
	}
	// Use double the PC quantum on riscv64, so that we retain
	// four byte alignment and use non-compressed instructions.
	buf.lr = abi.FuncPCABI0(goexit) + sys.PCQuantum*2
	buf.pc = uintptr(fn)
	buf.ctxt = ctxt
}