aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/export_test.go
diff options
context:
space:
mode:
authorShenghou Ma <minux@golang.org>2015-04-30 19:03:31 -0400
committerMinux Ma <minux@golang.org>2015-05-05 07:32:58 +0000
commit102436e800d161dfd8b884278d1ddc5101f562dd (patch)
tree36b589806b48cdaa4c3371d3732edecd58624940 /src/runtime/export_test.go
parent62ea2c9093eb54ca4f84f9d6e0fd014ad9fe547c (diff)
downloadgo-102436e800d161dfd8b884278d1ddc5101f562dd.tar.xz
runtime: fix software FP regs corruption when emulating SQRT on ARM
When emulating ARM FSQRT instruction, the sqrt function itself should not use any floating point arithmetics, otherwise it will clobber the user software FP registers. Fortunately, the sqrt function only uses floating point instructions to test for corner cases, so it's easy to make that function does all it job using pure integer arithmetic only. I've verified that after this change, runtime.stepflt and runtime.sqrt doesn't contain any call to _sfloat. (Perhaps we should add //go:nosfloat to make the compiler enforce this?) Fixes #10641. Change-Id: Ida4742c49000fae4fea4649f28afde630ce4c576 Signed-off-by: Shenghou Ma <minux@golang.org> Reviewed-on: https://go-review.googlesource.com/9570 Reviewed-by: Dave Cheney <dave@cheney.net> Reviewed-by: Keith Randall <khr@golang.org>
Diffstat (limited to 'src/runtime/export_test.go')
-rw-r--r--src/runtime/export_test.go1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/runtime/export_test.go b/src/runtime/export_test.go
index 1b5f267b8b..e0c8b17bd3 100644
--- a/src/runtime/export_test.go
+++ b/src/runtime/export_test.go
@@ -17,6 +17,7 @@ var F32to64 = f32to64
var Fcmp64 = fcmp64
var Fintto64 = fintto64
var F64toint = f64toint
+var Sqrt = sqrt
var Entersyscall = entersyscall
var Exitsyscall = exitsyscall