--- a/libc/sysdeps/linux/mips/sysdep.h +++ b/libc/sysdeps/linux/mips/sysdep.h @@ -96,7 +96,8 @@ backwards into the previous fn. */ #ifdef __PIC__ -#define PSEUDO(name, syscall_name, args) \ +# if _MIPS_SIM == _ABIO32 +# define PSEUDO(name, syscall_name, args) \ .align 2; \ 99: move a0, v0; \ la t9,__syscall_error; \ @@ -109,6 +110,23 @@ .set reorder; \ bne a3, zero, 99b; \ L(syse1): +# else +# define PSEUDO(name, syscall_name, args) \ + .align 2; \ + 99: \ + .set noat; \ + .cpsetup t9, $1, name; \ + .set at; \ + move a0, v0; \ + dla t9,__syscall_error; \ + .cpreturn; \ + jr t9; \ + ENTRY(name) \ + li v0, SYS_ify(syscall_name); \ + syscall; \ + bne a3, zero, 99b; \ +L(syse1): +# endif #else #define PSEUDO(name, syscall_name, args) \ .set noreorder; \