37 lines
896 B
Diff
37 lines
896 B
Diff
|
--- 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; \
|