From bc9194752749640c61c339140cf11d13e6262a6a Mon Sep 17 00:00:00 2001 From: Joel Sing Date: Tue, 7 Jan 2020 04:25:57 +1100 Subject: [PATCH] runtime: correct assembly for openbsd/arm64 Correct the pipe and pipe2 implementations by using the correct RSP offsets, used to store and return the file descriptor array. Fix setNonblock by using the correct immediate value for O_NONBLOCK and replace EOR (exclusive OR) with ORR. Also correct the write1 implementation, which has a uintptr value for the fd argument. Change-Id: Ibca77af44b649e8bb330ca54f9c36a7a8b0f9cea Reviewed-on: https://go-review.googlesource.com/c/go/+/212765 Run-TryBot: Cherry Zhang TryBot-Result: Gobot Gobot Reviewed-by: Cherry Zhang --- src/runtime/sys_openbsd_arm64.s | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/runtime/sys_openbsd_arm64.s b/src/runtime/sys_openbsd_arm64.s index 8e1a5bc542..839aa57062 100644 --- a/src/runtime/sys_openbsd_arm64.s +++ b/src/runtime/sys_openbsd_arm64.s @@ -65,7 +65,7 @@ TEXT runtime·read(SB),NOSPLIT|NOFRAME,$0 // func pipe() (r, w int32, errno int32) TEXT runtime·pipe(SB),NOSPLIT|NOFRAME,$0-12 - MOVD RSP, R0 + MOVD $r+0(FP), R0 MOVW $0, R1 MOVD $101, R8 // sys_pipe2 SVC @@ -76,7 +76,7 @@ TEXT runtime·pipe(SB),NOSPLIT|NOFRAME,$0-12 // func pipe2(flags int32) (r, w int32, errno int32) TEXT runtime·pipe2(SB),NOSPLIT|NOFRAME,$0-20 - ADD $8, RSP, R0 + MOVD $r+8(FP), R0 MOVW flags+0(FP), R1 MOVD $101, R8 // sys_pipe2 SVC @@ -86,7 +86,7 @@ TEXT runtime·pipe2(SB),NOSPLIT|NOFRAME,$0-20 RET TEXT runtime·write1(SB),NOSPLIT|NOFRAME,$0 - MOVW fd+0(FP), R0 // arg 1 - fd + MOVD fd+0(FP), R0 // arg 1 - fd MOVD p+8(FP), R1 // arg 2 - buf MOVW n+16(FP), R2 // arg 3 - nbyte MOVD $4, R8 // sys_write @@ -428,8 +428,8 @@ TEXT runtime·setNonblock(SB),NOSPLIT|NOFRAME,$0-4 MOVD $0, R2 // arg 3 MOVD $92, R8 // sys_fcntl SVC - MOVD $0x800, R2 // O_NONBLOCK - EOR R0, R2 // arg 3 - flags + MOVD $4, R2 // O_NONBLOCK + ORR R0, R2 // arg 3 - flags MOVW fd+0(FP), R0 // arg 1 - fd MOVD $4, R1 // arg 2 - cmd (F_SETFL) MOVD $92, R8 // sys_fcntl -- 2.50.0