Don't use a3 to indicate syscall failure

This is an awkward convention.  User land can detect syscall failure by
checking if v0 is negative or, in the unlikely event we ever want user
addresses to be negative, checking if v0 > ULONG_MAX-MAX_ERRNO.

Rebuild your glibc.