From: Mikael Urankar Date: Mon, 19 Sep 2022 16:46:36 +0000 (+0200) Subject: runtime: Add vdso on freebsd/riscv64 X-Git-Tag: go1.20rc1~584 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=0e56c31b85264c35869b3f5c0884beb9e2517110;p=gostls13.git runtime: Add vdso on freebsd/riscv64 Use rdtime to retrieve the timecounter, same as the FreeBSD libc. Updates #53466 Change-Id: I48816e9100036f1ef483e4d3afcf10db0d3b85f8 Reviewed-on: https://go-review.googlesource.com/c/go/+/443036 Reviewed-by: Meng Zhuo Reviewed-by: Dmitri Goutnik TryBot-Result: Gopher Robot Reviewed-by: David Chase Reviewed-by: Than McIntosh Reviewed-by: Yuval Pavel Zholkover Run-TryBot: Meng Zhuo --- diff --git a/src/runtime/sys_freebsd_riscv64.s b/src/runtime/sys_freebsd_riscv64.s index 4b8699e2bf..30deed2573 100644 --- a/src/runtime/sys_freebsd_riscv64.s +++ b/src/runtime/sys_freebsd_riscv64.s @@ -428,3 +428,9 @@ TEXT runtime·closeonexec(SB),NOSPLIT|NOFRAME,$0 MOV $SYS_fcntl, T0 ECALL RET + +// func getCntxct() uint32 +TEXT runtime·getCntxct(SB),NOSPLIT|NOFRAME,$0 + RDTIME A0 + MOVW A0, ret+0(FP) + RET diff --git a/src/runtime/vdso_freebsd_riscv64.go b/src/runtime/vdso_freebsd_riscv64.go index ce2dd9c439..a4fff4b1db 100644 --- a/src/runtime/vdso_freebsd_riscv64.go +++ b/src/runtime/vdso_freebsd_riscv64.go @@ -4,7 +4,18 @@ package runtime +const ( + _VDSO_TH_ALGO_RISCV_RDTIME = 1 +) + +func getCntxct() uint32 + //go:nosplit func (th *vdsoTimehands) getTimecounter() (uint32, bool) { - return 0, false + switch th.algo { + case _VDSO_TH_ALGO_RISCV_RDTIME: + return getCntxct(), true + default: + return 0, false + } }