aboutsummaryrefslogtreecommitdiffstats
path: root/toolchain/uClibc/patches/200-cris-syscall6.patch
diff options
context:
space:
mode:
authorJohn Crispin <blogic@openwrt.org>2007-06-02 00:46:02 +0000
committerJohn Crispin <blogic@openwrt.org>2007-06-02 00:46:02 +0000
commit5f63e4ddcc5847aba27e8bea15853835f3468941 (patch)
treed4161d76c676ff352e44294ba8819194d66356c4 /toolchain/uClibc/patches/200-cris-syscall6.patch
parent9a4964868b01d5b838669d7b8ecaec0991700124 (diff)
downloadupstream-5f63e4ddcc5847aba27e8bea15853835f3468941.tar.gz
upstream-5f63e4ddcc5847aba27e8bea15853835f3468941.tar.bz2
upstream-5f63e4ddcc5847aba27e8bea15853835f3468941.zip
add initial support for the crisarchitecture used on foxboards to openwrt
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@7439 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'toolchain/uClibc/patches/200-cris-syscall6.patch')
-rw-r--r--toolchain/uClibc/patches/200-cris-syscall6.patch34
1 files changed, 34 insertions, 0 deletions
diff --git a/toolchain/uClibc/patches/200-cris-syscall6.patch b/toolchain/uClibc/patches/200-cris-syscall6.patch
new file mode 100644
index 0000000000..8ecbab5c33
--- /dev/null
+++ b/toolchain/uClibc/patches/200-cris-syscall6.patch
@@ -0,0 +1,34 @@
+diff -urN uClibc-0.9.28.2.orig/libc/sysdeps/linux/cris/bits/syscalls.h uClibc-0.9.28.2/libc/sysdeps/linux/cris/bits/syscalls.h
+--- uClibc-0.9.28.2.orig/libc/sysdeps/linux/cris/bits/syscalls.h 2007-05-15 19:45:43.000000000 +0200
++++ uClibc-0.9.28.2/libc/sysdeps/linux/cris/bits/syscalls.h 2007-05-15 19:47:20.000000000 +0200
+@@ -62,6 +62,30 @@
+ return (type) (INLINE_SYSCALL(name, 5, arg1, arg2, arg3, arg4, arg5)); \
+ }
+
++#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
++ type5,arg5,type6,arg6) \
++type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5,type6 arg6) \
++{ \
++ register long __a __asm__ ("r10") = (long) arg1; \
++ register long __b __asm__ ("r11") = (long) arg2; \
++ register long __c __asm__ ("r12") = (long) arg3; \
++ register long __d __asm__ ("r13") = (long) arg4; \
++ register long __n_ __asm__ ("r9") = (__NR_##name); \
++ __asm__ __volatile__ (".ifnc %0%1%3%4%5,$r10$r9$r11$r12$r13\n\t" \
++ ".err\n\t" \
++ ".endif\n\t" \
++ "move %6,$mof\n\tmove %7,$srp\n\t" \
++ "break 13" \
++ : "=r" (__a) \
++ : "r" (__n_), "0" (__a), "r" (__b), \
++ "r" (__c), "r" (__d), "g" (arg5), "g" (arg6)\
++ : "srp"); \
++ if (__a >= 0) \
++ return (type) __a; \
++ __set_errno ( -__a); \
++ return (type) -1; \
++}
++
+ #undef INLINE_SYSCALL
+ #define INLINE_SYSCALL(name, nr, args...) \
+ ({ \