From e805b29fdd6ffff314490d56ec9da3f246743f00 Mon Sep 17 00:00:00 2001
From: Steven Barth <cyrus@openwrt.org>
Date: Sat, 28 Feb 2009 01:29:00 +0000
Subject: [PATCH] Upstream fix for syscall() not setting errno on errors on
 MIPS

SVN-Revision: 14689
---
 .../uClibc/patches/160-mips_syscall.patch     | 31 +++++++++++++++++++
 1 file changed, 31 insertions(+)
 create mode 100644 toolchain/uClibc/patches/160-mips_syscall.patch

diff --git a/toolchain/uClibc/patches/160-mips_syscall.patch b/toolchain/uClibc/patches/160-mips_syscall.patch
new file mode 100644
index 0000000000..c5e5f6b468
--- /dev/null
+++ b/toolchain/uClibc/patches/160-mips_syscall.patch
@@ -0,0 +1,31 @@
+--- 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
-- 
GitLab