aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/sys_openbsd_arm64.s
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/sys_openbsd_arm64.s')
-rw-r--r--src/runtime/sys_openbsd_arm64.s14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/runtime/sys_openbsd_arm64.s b/src/runtime/sys_openbsd_arm64.s
index 0bd801ff7a..c40889861a 100644
--- a/src/runtime/sys_openbsd_arm64.s
+++ b/src/runtime/sys_openbsd_arm64.s
@@ -306,17 +306,21 @@ noerr:
RET
TEXT runtime·fcntl_trampoline(SB),NOSPLIT,$0
- MOVW 4(R0), R1 // arg 2 - cmd
- MOVW 8(R0), R2 // arg 3 - arg
- MOVW 0(R0), R0 // arg 1 - fd
+ MOVD R0, R19
+ MOVW 0(R19), R0 // arg 1 - fd
+ MOVW 4(R19), R1 // arg 2 - cmd
+ MOVW 8(R19), R2 // arg 3 - arg
MOVD $0, R3 // vararg
CALL libc_fcntl(SB)
+ MOVD $0, R1
CMP $-1, R0
BNE noerr
CALL libc_errno(SB)
- MOVW (R0), R0
- NEG R0, R0 // caller expects negative errno value
+ MOVW (R0), R1
+ MOVW $-1, R0
noerr:
+ MOVW R0, 12(R19)
+ MOVW R1, 16(R19)
RET
TEXT runtime·sigaction_trampoline(SB),NOSPLIT,$0