summaryrefslogtreecommitdiff
path: root/sys/include/sys/syscall.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/include/sys/syscall.h')
-rw-r--r--sys/include/sys/syscall.h74
1 files changed, 2 insertions, 72 deletions
diff --git a/sys/include/sys/syscall.h b/sys/include/sys/syscall.h
index 41d1e78..afe7c2d 100644
--- a/sys/include/sys/syscall.h
+++ b/sys/include/sys/syscall.h
@@ -33,6 +33,8 @@
#if !defined(__ASSEMBLER__)
#include <sys/types.h>
#include <sys/cdefs.h>
+#else
+#include <machine/syscall.h>
#endif /* !__ASSEMBLER__ */
#define SYS_none 0
@@ -64,76 +66,4 @@ extern const size_t MAX_SYSCALLS;
extern scret_t(*g_sctab[])(struct syscall_args *);
#endif /* _KERNEL */
-#if !defined(__ASSEMBLER__)
-__always_inline static inline long
-syscall0(uint64_t code)
-{
- volatile long ret;
- __ASMV("int $0x80" : "=a"(ret) : "a"(code));
- return ret;
-}
-
-__always_inline static inline long
-syscall1(uint64_t code, uint64_t arg0)
-{
- volatile long ret;
- __ASMV("int $0x80" : "=a"(ret) : "a"(code), "D"(arg0) : "memory");
- return ret;
-}
-
-__always_inline static long inline
-syscall2(uint64_t code, uint64_t arg0, uint64_t arg1)
-{
- volatile long ret;
- __ASMV("int $0x80" : "=a"(ret) : "a"(code), "D"(arg0), "S"(arg1) : "memory");
- return ret;
-}
-
-__always_inline static inline long
-syscall3(uint64_t code, uint64_t arg0, uint64_t arg1, uint64_t arg2)
-{
- volatile long ret;
- __ASMV("int $0x80" : "=a"(ret) : "a"(code), "D"(arg0), "S"(arg1), "d"(arg2) : "memory");
- return ret;
-}
-
-__always_inline static inline long
-syscall4(uint64_t code, uint64_t arg0, uint64_t arg1, uint64_t arg2, uint64_t arg3)
-{
- volatile long ret;
- register uint64_t _arg3 asm("r10") = arg3;
- __ASMV("int $0x80" : "=a"(ret) : "a"(code), "D"(arg0), "S"(arg1), "d"(arg2), "r"(_arg3) : "memory");
- return ret;
-}
-
-__always_inline static inline long
-syscall5(uint64_t code, uint64_t arg0, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4)
-{
- volatile long ret;
- register uint64_t _arg3 asm("r10") = arg3;
- register uint64_t _arg4 asm("r9") = arg4;
- __ASMV("int $0x80" : "=a"(ret) : "a"(code), "D"(arg0), "S"(arg1), "d"(arg2), "r"(_arg3), "r"(_arg4) : "memory");
- return ret;
-}
-
-__always_inline static inline long
-syscall6(uint64_t code, uint64_t arg0, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5)
-{
- volatile long ret;
- register uint64_t _arg3 asm("r10") = arg3;
- register uint64_t _arg4 asm("r9") = arg4;
- register uint64_t _arg5 asm("r8") = arg5;
- __ASMV("int $0x80" : "=a"(ret) : "a"(code), "D"(arg0), "S"(arg1), "d"(arg2), "r"(_arg3), "r"(_arg4), "r"(_arg5) : "memory");
- return ret;
-}
-
-#define _SYSCALL_N(a0, a1, a2, a3, a4, a5, a6, name, ...) \
- name
-
-#define syscall(...) \
-_SYSCALL_N(__VA_ARGS__, syscall6, syscall5, \
- syscall4, syscall3, syscall2, syscall1, \
- syscall0)(__VA_ARGS__)
-
-#endif /* !__ASSEMBLER__ */
#endif /* _SYS_SYSCALL_H_ */