diff options
author | mirabilos <m@mirbsd.org> | 2017-01-29 15:30:50 +0100 |
---|---|---|
committer | Waldemar Brodkorb <wbx@openadk.org> | 2017-01-29 20:07:28 +0100 |
commit | 9b457baf8d46329f7d7ee2aa084022bb0df88551 (patch) | |
tree | 87b726f65dd2223975c89ce98a180e792017d7f3 /libc/sysdeps/linux/i386/bits | |
parent | 2d3403be6c680fddcc66238baa0a25c0554e2227 (diff) |
use safe, even if possibly a few cycles slower, six-argument syscall implementation
Signed-off-by: mirabilos <m@mirbsd.org>
Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
Diffstat (limited to 'libc/sysdeps/linux/i386/bits')
-rw-r--r-- | libc/sysdeps/linux/i386/bits/syscalls.h | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/libc/sysdeps/linux/i386/bits/syscalls.h b/libc/sysdeps/linux/i386/bits/syscalls.h index e76a45653..70ee825a5 100644 --- a/libc/sysdeps/linux/i386/bits/syscalls.h +++ b/libc/sysdeps/linux/i386/bits/syscalls.h @@ -36,7 +36,11 @@ #define INTERNAL_SYSCALL_NCS_X86_3 INTERNAL_SYSCALL_NCS_X86_UPTOFIVE #define INTERNAL_SYSCALL_NCS_X86_4 INTERNAL_SYSCALL_NCS_X86_UPTOFIVE #define INTERNAL_SYSCALL_NCS_X86_5 INTERNAL_SYSCALL_NCS_X86_UPTOFIVE -#define INTERNAL_SYSCALL_NCS_X86_6 INTERNAL_SYSCALL_NCS_X86_UPTOFIVE + +extern long __libc_i386_syscall6(unsigned long, ...) + __attribute__((__cdecl__)); +#define INTERNAL_SYSCALL_NCS_X86_6(name, err, nr, args...) \ + __libc_i386_syscall6((unsigned long)name, args) #define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \ INTERNAL_SYSCALL_NCS_X86_##nr(name, err, nr, args) @@ -104,7 +108,6 @@ __asm__ ( #define LOADARGS_3 LOADARGS_1 #define LOADARGS_4 LOADARGS_1 #define LOADARGS_5 LOADARGS_1 -#define LOADARGS_6 LOADARGS_1 "push %%ebp\n\t" "movl %7, %%ebp\n\t" #define RESTOREARGS_0 #define RESTOREARGS_1 "bpopl .L__X'%k2, %k2\n\t" @@ -112,7 +115,6 @@ __asm__ ( #define RESTOREARGS_3 RESTOREARGS_1 #define RESTOREARGS_4 RESTOREARGS_1 #define RESTOREARGS_5 RESTOREARGS_1 -#define RESTOREARGS_6 "pop %%ebp\n\t" RESTOREARGS_1 #define ASMFMT_0() /* "acdSD" constraint would work too, but "SD" would use esi/edi and cause @@ -132,8 +134,6 @@ __asm__ ( , "a" (arg1), "c" (arg2), "d" (arg3), "S" (arg4) #define ASMFMT_5(arg1, arg2, arg3, arg4, arg5) \ , "a" (arg1), "c" (arg2), "d" (arg3), "S" (arg4), "D" (arg5) -#define ASMFMT_6(arg1, arg2, arg3, arg4, arg5, arg6) \ - , "a" (arg1), "c" (arg2), "d" (arg3), "S" (arg4), "D" (arg5), "g" (arg6) #endif /* __ASSEMBLER__ */ #endif /* _BITS_SYSCALLS_H */ |