diff --git a/plat/linuxmips/libsys/_syscall.s b/plat/linuxmips/libsys/_syscall.s index 75c551d20..8d5ecde90 100644 --- a/plat/linuxmips/libsys/_syscall.s +++ b/plat/linuxmips/libsys/_syscall.s @@ -14,5 +14,21 @@ .define __syscall __syscall: + lw r2, 0(sp) ! syscall number + addiu r2, r2, 4000 ! MIPS uses non-standard numbers + lw r4, 4(sp) + lw r5, 8(sp) + lw r6, 12(sp) syscall 0 + beq r7, zero, exit ! branch on success + nop + + /* The result (in r2) is the errno. */ + lui at, ha16[_errno] + sw r2, lo16[_errno] (at) + li r2, -1 +exit: + jr ra + nop +