summaryrefslogtreecommitdiffstats
path: root/toolchain/uClibc/patches-0.9.29/160-mips_syscall.patch
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2009-03-23 17:56:28 +0000
committerFelix Fietkau <nbd@openwrt.org>2009-03-23 17:56:28 +0000
commit03205ec7407b379602abd8bb0c41c62fe28151f4 (patch)
tree76657f61fec7fb956d0f09834ab6947f3b8aa4a6 /toolchain/uClibc/patches-0.9.29/160-mips_syscall.patch
parentfc9181c4e25fa55aa13ff2b2960fe45d68080100 (diff)
downloadmaster-31e0f0ae-03205ec7407b379602abd8bb0c41c62fe28151f4.tar.gz
master-31e0f0ae-03205ec7407b379602abd8bb0c41c62fe28151f4.tar.bz2
master-31e0f0ae-03205ec7407b379602abd8bb0c41c62fe28151f4.zip
clean up uclibc patch/config version handling a bit
SVN-Revision: 14994
Diffstat (limited to 'toolchain/uClibc/patches-0.9.29/160-mips_syscall.patch')
-rw-r--r--toolchain/uClibc/patches-0.9.29/160-mips_syscall.patch31
1 files changed, 31 insertions, 0 deletions
diff --git a/toolchain/uClibc/patches-0.9.29/160-mips_syscall.patch b/toolchain/uClibc/patches-0.9.29/160-mips_syscall.patch
new file mode 100644
index 0000000000..c5e5f6b468
--- /dev/null
+++ b/toolchain/uClibc/patches-0.9.29/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