diff options
| -rw-r--r-- | libc/sysdeps/linux/bfin/bits/syscalls.h | 30 | 
1 files changed, 30 insertions, 0 deletions
| diff --git a/libc/sysdeps/linux/bfin/bits/syscalls.h b/libc/sysdeps/linux/bfin/bits/syscalls.h index 82692fc65..c51fa05d5 100644 --- a/libc/sysdeps/linux/bfin/bits/syscalls.h +++ b/libc/sysdeps/linux/bfin/bits/syscalls.h @@ -139,5 +139,35 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) {	\  __syscall_return(type,__res);						\  } +#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5)	\ +type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) {	\ +  long __res;								\ +  __asm__ __volatile__ (						\ +  "[--sp] = r5;\n\t"                                                    \ +  "[--sp] = r4;\n\t"                                                    \ +  "[--sp] = r3;\n\t"                                                    \ +  "r4=%6;\n\t"								\ +  "r3=%5;\n\t"								\ +  "r2=%4;\n\t"								\ +  "r1=%3;\n\t"								\ +  "r0=%2;\n\t"								\ +  "P0=%1;\n\t"								\ +  "excpt 0;\n\t" 							\ +  "%0=r0;\n\t"								\ +  "r3 = [sp++];\n\t" 							\ +  "r4 = [sp++];\n\t"                                                    \ +  "r5 = [sp++];\n\t"                                                    \ +  	: "=da" (__res)							\ +  	: "i"  (__NR_##name),						\ +	  "rm"  ((long)(arg1)),						\ +	  "rm"  ((long)(arg2)),						\ +	  "rm"  ((long)(arg3)),						\ +	  "rm"  ((long)(arg4)),						\ +	  "rm"  ((long)(arg5)),						\ +	  "rm"  ((long)(arg6))						\ +	: "CC","R0","R1","R2","R3","R4","R5","P0");				\ +__syscall_return(type,__res);						\ +} +  #endif /* __ASSEMBLER__ */  #endif /* _BITS_SYSCALLS_H */ | 
