Commit edf3ec98 authored by Joel Sing's avatar Joel Sing

runtime: correct setNonblock on linux/arm64

The current code uses EOR (exclusive OR), which will result in the O_NONBLOCK
flag being toggled rather than being set. Other implementations use OR, hence
this is likely a bug.

Change-Id: I5dafa9c572452070bd37789c8a731ad6d04a86cd
Reviewed-on: https://go-review.googlesource.com/c/go/+/212766
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
parent f266cce6
...@@ -688,7 +688,7 @@ TEXT runtime·setNonblock(SB),NOSPLIT|NOFRAME,$0-4 ...@@ -688,7 +688,7 @@ TEXT runtime·setNonblock(SB),NOSPLIT|NOFRAME,$0-4
MOVD $SYS_fcntl, R8 MOVD $SYS_fcntl, R8
SVC SVC
MOVD $0x800, R2 // O_NONBLOCK MOVD $0x800, R2 // O_NONBLOCK
EOR R0, R2 ORR R0, R2
MOVW fd+0(FP), R0 // fd MOVW fd+0(FP), R0 // fd
MOVD $4, R1 // F_SETFL MOVD $4, R1 // F_SETFL
MOVD $SYS_fcntl, R8 MOVD $SYS_fcntl, R8
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment