diff options
author | Mike Frysinger <vapier@gentoo.org> | 2006-01-15 19:36:32 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2006-01-15 19:36:32 +0000 |
commit | c50ee9bde4fa794cd2bb962dd1f3f44d0fbf8274 (patch) | |
tree | 5d63e681f567f8034ae3ae93a6b289afefe99915 /libc | |
parent | 3ea3326bcd84a2663c9b78579d2a78cbfe9c4d6c (diff) |
syscall6
Diffstat (limited to 'libc')
-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 */ |