diff options
author | Mike Frysinger <vapier@gentoo.org> | 2006-06-07 12:30:09 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2006-06-07 12:30:09 +0000 |
commit | b08728d5872c59b6830ed74bae57342b473f8757 (patch) | |
tree | b71af6e2d77074f7f3d0a97c2862528c07005175 | |
parent | 3414e4ba22701ac68dedb941017ef6be28a56868 (diff) |
merge syscall fixes from upstream blackfin cvs
-rw-r--r-- | libc/sysdeps/linux/bfin/bits/syscalls.h | 226 |
1 files changed, 107 insertions, 119 deletions
diff --git a/libc/sysdeps/linux/bfin/bits/syscalls.h b/libc/sysdeps/linux/bfin/bits/syscalls.h index 5ffaa7a8b..f4c0e60d1 100644 --- a/libc/sysdeps/linux/bfin/bits/syscalls.h +++ b/libc/sysdeps/linux/bfin/bits/syscalls.h @@ -46,147 +46,135 @@ do { \ #define _syscall0(type,name) \ type name(void) { \ - long __res; \ - __asm__ __volatile__ ( \ - "p0 = %1;\n\t" \ - "excpt 0;\n\t" \ - "%0=r0;\n\t" \ - : "=da" (__res) \ - : "i" (__NR_##name) \ - : "CC", "P0"); \ -__syscall_return(type,__res); \ + long __res; \ + __asm__ __volatile__ ( \ + "p0 = %1;\n\t" \ + "excpt 0;\n\t" \ + "%0=r0;\n\t" \ + : "=da" (__res) \ + : "i" (__NR_##name) \ + : "memory","CC","P0"); \ + __syscall_return(type,__res); \ } #define _syscall1(type,name,type1,arg1) \ type name(type1 arg1) { \ - long __res; \ - __asm__ __volatile__ ( \ - "r0=%2;\n\t" \ - "p0=%1;\n\t" \ - "excpt 0;\n\t" \ - "%0=r0;\n\t" \ - : "=da" (__res) \ - : "i" (__NR_##name), \ - "a" ((long)(arg1)) \ - : "CC", "R0", "P0"); \ -__syscall_return(type,__res); \ + long __res; \ + __asm__ __volatile__ ( \ + "r0=%2;\n\t" \ + "p0=%1;\n\t" \ + "excpt 0;\n\t" \ + "%0=r0;\n\t" \ + : "=da" (__res) \ + : "i" (__NR_##name), \ + "rm" ((long)(arg1)) \ + : "memory","CC","R0","P0"); \ + __syscall_return(type,__res); \ } #define _syscall2(type,name,type1,arg1,type2,arg2) \ type name(type1 arg1,type2 arg2) { \ - long __res; \ - __asm__ __volatile__ ( \ - "r1=%3;\n\t" \ - "r0=%2;\n\t" \ - "p0=%1;\n\t" \ - "excpt 0;\n\t" \ - "%0=r0;\n\t" \ - : "=da" (__res) \ - : "i" (__NR_##name), \ - "a" ((long)(arg1)), \ - "a" ((long)(arg2)) \ - : "CC", "R0","R1", "P0"); \ -__syscall_return(type,__res); \ + long __res; \ + __asm__ __volatile__ ( \ + "r1=%3;\n\t" \ + "r0=%2;\n\t" \ + "p0=%1;\n\t" \ + "excpt 0;\n\t" \ + "%0=r0;\n\t" \ + : "=da" (__res) \ + : "i" (__NR_##name), \ + "rm" ((long)(arg1)), \ + "rm" ((long)(arg2)) \ + : "memory","CC","R0","R1","P0"); \ + __syscall_return(type,__res); \ } - #define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ type name(type1 arg1,type2 arg2,type3 arg3) { \ - long __res; \ - __asm__ __volatile__ ( \ - "r2=%4;\n\t" \ - "r1=%3;\n\t" \ - "r0=%2;\n\t" \ - "p0=%1;\n\t" \ - "excpt 0;\n\t" \ - "%0=r0;\n\t" \ - : "=da" (__res) \ - : "i" (__NR_##name), \ - "a" ((long)(arg1)), \ - "a" ((long)(arg2)), \ - "a" ((long)(arg3)) \ - : "CC", "R0","R1","R2", "P0"); \ -__syscall_return(type,__res); \ + long __res; \ + __asm__ __volatile__ ( \ + "r2=%4;\n\t" \ + "r1=%3;\n\t" \ + "r0=%2;\n\t" \ + "p0=%1;\n\t" \ + "excpt 0;\n\t" \ + "%0=r0;\n\t" \ + : "=da" (__res) \ + : "i" (__NR_##name), \ + "rm" ((long)(arg1)), \ + "rm" ((long)(arg2)), \ + "rm" ((long)(arg3)) \ + : "memory","CC","R0","R1","R2","P0"); \ + __syscall_return(type,__res); \ } #define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4)\ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) { \ - long __res; \ - __asm__ __volatile__ ( \ - "[--sp] = r3;\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" \ - : "=da" (__res) \ - : "i" (__NR_##name), \ - "a" ((long)(arg1)), \ - "a" ((long)(arg2)), \ - "a" ((long)(arg3)), \ - "a" ((long)(arg4)) \ - : "CC", "R0","R1","R2","R3", "P0"); \ -__syscall_return(type,__res); \ + long __res; \ + __asm__ __volatile__ ( \ + "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" \ + : "=da" (__res) \ + : "i" (__NR_##name), \ + "rm" ((long)(arg1)), \ + "rm" ((long)(arg2)), \ + "rm" ((long)(arg3)), \ + "rm" ((long)(arg4)) \ + : "memory","CC","R0","R1","R2","R3","P0"); \ + __syscall_return(type,__res); \ } #define _syscall5(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] = 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" \ - : "=da" (__res) \ - : "i" (__NR_##name), \ - "rm" ((long)(arg1)), \ - "rm" ((long)(arg2)), \ - "rm" ((long)(arg3)), \ - "rm" ((long)(arg4)), \ - "rm" ((long)(arg5)) \ - : "CC","R0","R1","R2","R3","R4","P0"); \ -__syscall_return(type,__res); \ + long __res; \ + __asm__ __volatile__ ( \ + "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" \ + : "=da" (__res) \ + : "i" (__NR_##name), \ + "rm" ((long)(arg1)), \ + "rm" ((long)(arg2)), \ + "rm" ((long)(arg3)), \ + "rm" ((long)(arg4)), \ + "rm" ((long)(arg5)) \ + : "memory","CC","R0","R1","R2","R3","R4","P0"); \ + __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); \ +#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__ ( \ + "r5=%7;\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" \ + : "=da" (__res) \ + : "i" (__NR_##name), \ + "rm" ((long)(arg1)), \ + "rm" ((long)(arg2)), \ + "rm" ((long)(arg3)), \ + "rm" ((long)(arg4)), \ + "rm" ((long)(arg5)), \ + "rm" ((long)(arg6)) \ + : "memory","CC","R0","R1","R2","R3","R4","R5","P0"); \ + __syscall_return(type,__res); \ } #endif /* __ASSEMBLER__ */ |