From 0e56c31b85264c35869b3f5c0884beb9e2517110 Mon Sep 17 00:00:00 2001 From: Mikael Urankar Date: Mon, 19 Sep 2022 18:46:36 +0200 Subject: [PATCH] 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 --- src/runtime/sys_freebsd_riscv64.s | 6 ++++++ src/runtime/vdso_freebsd_riscv64.go | 13 ++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) 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 + } } -- 2.50.0