aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/sys_freebsd_arm64.s
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/sys_freebsd_arm64.s')
-rw-r--r--src/runtime/sys_freebsd_arm64.s12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/runtime/sys_freebsd_arm64.s b/src/runtime/sys_freebsd_arm64.s
index 4521ac61e4..799be4bd5d 100644
--- a/src/runtime/sys_freebsd_arm64.s
+++ b/src/runtime/sys_freebsd_arm64.s
@@ -444,17 +444,21 @@ ok:
MOVW R0, ret+48(FP)
RET
-// func fcntl(fd, cmd, arg int32) int32
+// func fcntl(fd, cmd, arg int32) (int32, int32)
TEXT runtime·fcntl(SB),NOSPLIT,$0
MOVW fd+0(FP), R0
MOVW cmd+4(FP), R1
MOVW arg+8(FP), R2
MOVD $SYS_fcntl, R8
SVC
- BCC ok
- NEG R0, R0 // caller expects negative errno
-ok:
+ BCC noerr
+ MOVW $-1, R1
+ MOVW R1, ret+16(FP)
+ MOVW R0, errno+20(FP)
+ RET
+noerr:
MOVW R0, ret+16(FP)
+ MOVW $0, errno+20(FP)
RET
// func closeonexec(fd int32)