aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/os_netbsd_arm.go
diff options
context:
space:
mode:
authorBen Shi <powerman1st@163.com>2017-02-27 07:56:57 +0000
committerCherry Zhang <cherryyz@google.com>2017-04-11 12:25:55 +0000
commit69261ecad6dd2f3efd5e4a249325ea27311526b6 (patch)
tree183eb53b19753469b00f3f9e8338f342b8c71fd5 /src/runtime/os_netbsd_arm.go
parent2a8d99e427ab19cb4f00680244f31818b53aa238 (diff)
downloadgo-69261ecad6dd2f3efd5e4a249325ea27311526b6.tar.gz
go-69261ecad6dd2f3efd5e4a249325ea27311526b6.zip
runtime: use hardware divider to improve performance
The hardware divider is an optional component of ARMv7. This patch detects whether it is available in runtime and use it or not. 1. The hardware divider is detected at startup and a flag is set/clear according to a perticular bit of runtime.hwcap. 2. Each call of runtime.udiv will check this flag and decide if use the hardware division instruction. A rough test shows the performance improves 40-50% for ARMv7. And the compatibility of ARMv5/v6 is not broken. fixes #19118 Change-Id: Ic586bc9659ebc169553ca2004d2bdb721df823ac Reviewed-on: https://go-review.googlesource.com/37496 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
Diffstat (limited to 'src/runtime/os_netbsd_arm.go')
-rw-r--r--src/runtime/os_netbsd_arm.go2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/runtime/os_netbsd_arm.go b/src/runtime/os_netbsd_arm.go
index 95603da643..b02e36a73a 100644
--- a/src/runtime/os_netbsd_arm.go
+++ b/src/runtime/os_netbsd_arm.go
@@ -6,6 +6,8 @@ package runtime
import "unsafe"
+var hardDiv bool // TODO: set if a hardware divider is available
+
func lwp_mcontext_init(mc *mcontextt, stk unsafe.Pointer, mp *m, gp *g, fn uintptr) {
// Machine dependent mcontext initialisation for LWP.
mc.__gregs[_REG_R15] = uint32(funcPC(lwp_tramp))