diff options
| author | "Steven J. Hill" <sjhill@realitydiluted.com> | 2006-02-28 00:54:02 +0000 |
|---|---|---|
| committer | "Steven J. Hill" <sjhill@realitydiluted.com> | 2006-02-28 00:54:02 +0000 |
| commit | 5eb1fae2a97ffc88d136502ace050662e57ef34a (patch) | |
| tree | df1087921ff9a88aa8a47ddfd55dc15a793fec56 /libc/sysdeps/linux/bfin/bits/syscalls.h | |
| parent | dc0e95c67d350ca9e950abb5f75a63833380af9f (diff) | |
| download | uClibc-alpine-5eb1fae2a97ffc88d136502ace050662e57ef34a.tar.bz2 uClibc-alpine-5eb1fae2a97ffc88d136502ace050662e57ef34a.tar.xz | |
Merge from trunk.
Diffstat (limited to 'libc/sysdeps/linux/bfin/bits/syscalls.h')
| -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..d8d628cab 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,type6,arg6) \ +type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6) { \ + 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 */ |
