Skip to content

Commit 04f718f

Browse files
committed
runtime: fix syscall error returns on mips64
1 parent 1c196c5 commit 04f718f

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

src/runtime/sys_linux_mips64x.s

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,8 @@ TEXT runtime·rt_sigaction(SB),NOSPLIT|NOFRAME,$0-36
218218
MOVV size+24(FP), R7
219219
MOVV $SYS_rt_sigaction, R2
220220
SYSCALL
221+
BEQ R7, 2(PC)
222+
SUBVU R2, R0, R2 // caller expects negative errno
221223
MOVW R2, ret+32(FP)
222224
RET
223225

@@ -299,6 +301,8 @@ TEXT runtime·futex(SB),NOSPLIT|NOFRAME,$0
299301
MOVW val3+32(FP), R9
300302
MOVV $SYS_futex, R2
301303
SYSCALL
304+
BEQ R7, 2(PC)
305+
SUBVU R2, R0, R2 // caller expects negative errno
302306
MOVW R2, ret+40(FP)
303307
RET
304308

@@ -321,6 +325,8 @@ TEXT runtime·clone(SB),NOSPLIT|NOFRAME,$0
321325

322326
MOVV $SYS_clone, R2
323327
SYSCALL
328+
BEQ R7, 2(PC)
329+
SUBVU R2, R0, R2 // caller expects negative errno
324330

325331
// In parent, return.
326332
BEQ R2, 3(PC)
@@ -383,6 +389,8 @@ TEXT runtime·sched_getaffinity(SB),NOSPLIT|NOFRAME,$0
383389
MOVV buf+16(FP), R6
384390
MOVV $SYS_sched_getaffinity, R2
385391
SYSCALL
392+
BEQ R7, 2(PC)
393+
SUBVU R2, R0, R2 // caller expects negative errno
386394
MOVW R2, ret+24(FP)
387395
RET
388396

@@ -391,6 +399,8 @@ TEXT runtime·epollcreate(SB),NOSPLIT|NOFRAME,$0
391399
MOVW size+0(FP), R4
392400
MOVV $SYS_epoll_create, R2
393401
SYSCALL
402+
BEQ R7, 2(PC)
403+
SUBVU R2, R0, R2 // caller expects negative errno
394404
MOVW R2, ret+8(FP)
395405
RET
396406

@@ -399,6 +409,8 @@ TEXT runtime·epollcreate1(SB),NOSPLIT|NOFRAME,$0
399409
MOVW flags+0(FP), R4
400410
MOVV $SYS_epoll_create1, R2
401411
SYSCALL
412+
BEQ R7, 2(PC)
413+
SUBVU R2, R0, R2 // caller expects negative errno
402414
MOVW R2, ret+8(FP)
403415
RET
404416

@@ -424,6 +436,8 @@ TEXT runtime·epollwait(SB),NOSPLIT|NOFRAME,$0
424436
MOVV $0, R8
425437
MOVV $SYS_epoll_pwait, R2
426438
SYSCALL
439+
BEQ R7, 2(PC)
440+
SUBVU R2, R0, R2 // caller expects negative errno
427441
MOVW R2, ret+24(FP)
428442
RET
429443

0 commit comments

Comments
 (0)