1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-11-05 16:19:42 +02:00
openwrt-xburst/toolchain/uClibc/patches/160-mips_syscall.patch
cyrus d4331562d7 Upstream fix for syscall() not setting errno on errors on MIPS
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@14689 3c298f89-4303-0410-b956-a3cf2f4a3e73
2009-02-28 01:29:00 +00:00

32 lines
760 B
Diff

--- uClibc-0.9.29.orig/libc/sysdeps/linux/mips/syscall.S 2009-02-27 19:26:57.420288905 +0100
+++ uClibc-0.9.29/libc/sysdeps/linux/mips/syscall.S 2009-02-27 19:43:18.000000000 +0100
@@ -29,6 +29,9 @@
.type syscall,@function
.ent syscall
syscall:
+#ifdef __PIC__
+ SETUP_GP
+#endif
move v0, a0 /* Load system call number from first arg. */
move a0, a1 /* Move the next three args up a register. */
move a1, a2
@@ -60,6 +63,18 @@
#else
addiu sp,sp,32
#endif
+ bnez a3, 1f
j ra /* Return to caller. */
+1:
+ move a0,v0 /* Pass return val to C function. */
+
+#ifdef __PIC__
+ SETUP_GP64(v0, syscall)
+ PTR_LA t9, __syscall_error
+ RESTORE_GP64
+ jr t9
+#else
+ j __syscall_error
+#endif
.end syscall
.size syscall,.-syscall