runtime: implement cputicks with the stable counter on loong64

The stable counter is described in Section 2.2.10.4, LoongArch Reference Manual Volume 1.

Ref: https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html

Change-Id: I160b695a8c0e38ef49b21fb8b41460fd23d9538c
Reviewed-on: https://go-review.googlesource.com/c/go/+/421656
Reviewed-by: Meidan Li <limeidan@loongson.cn>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Wayne Zuo <wdvxdr@golangcn.org>
Reviewed-by: David Chase <drchase@google.com>
Run-TryBot: Wayne Zuo <wdvxdr@golangcn.org>
Reviewed-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Michael Pratt <mpratt@google.com>
This commit is contained in:
Guoqi Chen 2022-08-05 13:32:08 +08:00 committed by Wayne Zuo
parent f5c7416511
commit f92a69f907
3 changed files with 7 additions and 8 deletions

View File

@ -86,6 +86,12 @@ TEXT runtime·mstart(SB),NOSPLIT|TOPFRAME,$0
JAL runtime·mstart0(SB)
RET // not reached
// func cputicks() int64
TEXT runtime·cputicks(SB),NOSPLIT,$0-8
RDTIMED R0, R4
MOVV R4, ret+0(FP)
RET
/*
* go-routine
*/

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build !arm && !arm64 && !loong64 && !mips64 && !mips64le && !mips && !mipsle && !wasm
//go:build !arm && !arm64 && !mips64 && !mips64le && !mips && !mipsle && !wasm
package runtime

View File

@ -9,10 +9,3 @@ package runtime
func archauxv(tag, val uintptr) {}
func osArchInit() {}
//go:nosplit
func cputicks() int64 {
// Currently cputicks() is used in blocking profiler and to seed fastrand().
// nanotime() is a poor approximation of CPU ticks that is enough for the profiler.
return nanotime()
}