aboutsummaryrefslogtreecommitdiffstats
path: root/toolchain/uClibc/patches-0.9.33.2/618-mips64_fix_syscall_error.patch
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2014-07-10 19:28:45 +0000
committerFelix Fietkau <nbd@openwrt.org>2014-07-10 19:28:45 +0000
commita22846267123c31f3717f42d0bce7da2043be0b0 (patch)
tree1c35e5d5a0c2df50f7ec21f071d63a5b7a66be02 /toolchain/uClibc/patches-0.9.33.2/618-mips64_fix_syscall_error.patch
parent752fdaeb911e28d139baf4f04f019cf56e6cb7e9 (diff)
downloadmaster-187ad058-a22846267123c31f3717f42d0bce7da2043be0b0.tar.gz
master-187ad058-a22846267123c31f3717f42d0bce7da2043be0b0.tar.bz2
master-187ad058-a22846267123c31f3717f42d0bce7da2043be0b0.zip
uClibc: add a whole bunch of mips64 related fixes
Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@41570 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'toolchain/uClibc/patches-0.9.33.2/618-mips64_fix_syscall_error.patch')
-rw-r--r--toolchain/uClibc/patches-0.9.33.2/618-mips64_fix_syscall_error.patch36
1 files changed, 36 insertions, 0 deletions
diff --git a/toolchain/uClibc/patches-0.9.33.2/618-mips64_fix_syscall_error.patch b/toolchain/uClibc/patches-0.9.33.2/618-mips64_fix_syscall_error.patch
new file mode 100644
index 0000000000..67611fdebc
--- /dev/null
+++ b/toolchain/uClibc/patches-0.9.33.2/618-mips64_fix_syscall_error.patch
@@ -0,0 +1,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; \