X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fsvn-archive%2Farchive.git;a=blobdiff_plain;f=toolchain%2FuClibc%2Fpatches%2F160-mips_syscall.patch;fp=toolchain%2FuClibc%2Fpatches%2F160-mips_syscall.patch;h=c5e5f6b468628fef4d9e8be7fe24ce3488a27bcb;hp=0000000000000000000000000000000000000000;hb=20160d77ccb824285dcc283520ebf22da3510d20;hpb=39bdf3e26e20ac5c978d3c4e73b5c91fd4f0c124 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