aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/sys_linux_arm64.s
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2016-02-10 21:46:51 -0800
committerIan Lance Taylor <iant@golang.org>2016-02-12 00:07:29 +0000
commitcc0a04d351c69a99f65342ad5822f2bba8b247d0 (patch)
tree3e63e89cae82b60fcddf77d2e7672b0cb747f6f4 /src/runtime/sys_linux_arm64.s
parent70418eb819eb1d02c2c56a13159d95baab85d3a8 (diff)
downloadgo-cc0a04d351c69a99f65342ad5822f2bba8b247d0.tar.gz
go-cc0a04d351c69a99f65342ad5822f2bba8b247d0.zip
runtime: fix errno sign for some mmap and mincore cases
The caller of mmap expects it to return a positive errno value, but the linux-arm64 and nacl-386 system calls returned a negative errno value. Correct them to negate the errno value. The caller of mincore expects it to return a negative errno value (yes, this is inconsistent), but the linux-mips64x and linux-ppc64x system call returned a positive errno value. Correct them to negate the errno value. Add a test that mmap returns errno with the correct sign. Brad added a test for mincore's errno value in https://golang.org/cl/19457. Fixes #14297. Change-Id: I2b93f32e679bd1eae1c9aef9ae7bcf0ba39521b5 Reviewed-on: https://go-review.googlesource.com/19455 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Minux Ma <minux@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/runtime/sys_linux_arm64.s')
-rw-r--r--src/runtime/sys_linux_arm64.s3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/runtime/sys_linux_arm64.s b/src/runtime/sys_linux_arm64.s
index ca0e07aaa4..94c101a3d4 100644
--- a/src/runtime/sys_linux_arm64.s
+++ b/src/runtime/sys_linux_arm64.s
@@ -269,6 +269,9 @@ TEXT runtime·mmap(SB),NOSPLIT,$-8
MOVD $SYS_mmap, R8
SVC
+ CMN $4095, R0
+ BCC 2(PC)
+ NEG R0,R0
MOVD R0, ret+32(FP)
RET