summaryrefslogtreecommitdiff
path: root/toolchain/uClibc/patches-0.9.33.2/618-mips64_fix_syscall_error.patch
blob: 67611fdebce8dd077a75493b004b013684f92e32 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
--- 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;					\