Skip to content

Commit a970992

Browse files
committed
unix: add support for openbsd/riscv64
Updates golang/go#55999 Change-Id: I2ea76f72faaddc46da0c37650de702bc7e90eea2 Reviewed-on: https://go-review.googlesource.com/c/sys/+/439976 TryBot-Result: Gopher Robot <[email protected]> Reviewed-by: Ian Lance Taylor <[email protected]> Reviewed-by: Bryan Mills <[email protected]> Run-TryBot: Joel Sing <[email protected]> Reviewed-by: Tobias Klauser <[email protected]>
1 parent e2bdbfe commit a970992

9 files changed

+6045
-1
lines changed

unix/mkall.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,15 @@ openbsd_mips64)
182182
# API consistent across platforms.
183183
mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
184184
;;
185+
openbsd_riscv64)
186+
mkasm="go run mkasm.go"
187+
mkerrors="$mkerrors -m64"
188+
mksyscall="go run mksyscall.go -openbsd -libc"
189+
mksysctl="go run mksysctl_openbsd.go"
190+
# Let the type of C char be signed for making the bare syscall
191+
# API consistent across platforms.
192+
mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
193+
;;
185194
solaris_amd64)
186195
mksyscall="go run mksyscall_solaris.go"
187196
mkerrors="$mkerrors -m64"

unix/mkasm.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ func archPtrSize(arch string) int {
2323
switch arch {
2424
case "386", "arm":
2525
return 4
26-
case "amd64", "arm64", "mips64":
26+
case "amd64", "arm64", "mips64", "riscv64":
2727
return 8
2828
default:
2929
log.Fatalf("Unknown arch %q", arch)

unix/syscall_openbsd_riscv64.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
// Copyright 2019 The Go Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style
3+
// license that can be found in the LICENSE file.
4+
5+
//go:build riscv64 && openbsd
6+
// +build riscv64,openbsd
7+
8+
package unix
9+
10+
func setTimespec(sec, nsec int64) Timespec {
11+
return Timespec{Sec: sec, Nsec: nsec}
12+
}
13+
14+
func setTimeval(sec, usec int64) Timeval {
15+
return Timeval{Sec: sec, Usec: usec}
16+
}
17+
18+
func SetKevent(k *Kevent_t, fd, mode, flags int) {
19+
k.Ident = uint64(fd)
20+
k.Filter = int16(mode)
21+
k.Flags = uint16(flags)
22+
}
23+
24+
func (iov *Iovec) SetLen(length int) {
25+
iov.Len = uint64(length)
26+
}
27+
28+
func (msghdr *Msghdr) SetControllen(length int) {
29+
msghdr.Controllen = uint32(length)
30+
}
31+
32+
func (msghdr *Msghdr) SetIovlen(length int) {
33+
msghdr.Iovlen = uint32(length)
34+
}
35+
36+
func (cmsg *Cmsghdr) SetLen(length int) {
37+
cmsg.Len = uint32(length)
38+
}
39+
40+
// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
41+
// of openbsd/riscv64 the syscall is called sysctl instead of __sysctl.
42+
const SYS___SYSCTL = SYS_SYSCTL

0 commit comments

Comments
 (0)