summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/i386/bits/syscalls.h
diff options
context:
space:
mode:
authormirabilos <m@mirbsd.org>2017-01-29 15:30:50 +0100
committerWaldemar Brodkorb <wbx@openadk.org>2017-01-29 20:07:28 +0100
commit9b457baf8d46329f7d7ee2aa084022bb0df88551 (patch)
tree87b726f65dd2223975c89ce98a180e792017d7f3 /libc/sysdeps/linux/i386/bits/syscalls.h
parent2d3403be6c680fddcc66238baa0a25c0554e2227 (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/syscalls.h')
-rw-r--r--libc/sysdeps/linux/i386/bits/syscalls.h10
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 */