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.h88
1 files changed, 14 insertions, 74 deletions
diff --git a/sys/include/sys/syscall.h b/sys/include/sys/syscall.h
index e93c0ce..08bd989 100644
--- a/sys/include/sys/syscall.h
+++ b/sys/include/sys/syscall.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2023-2024 Ian Marco Moffett and the Osmora Team.
+ * Copyright (c) 2023-2025 Ian Marco Moffett and the Osmora Team.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -33,7 +33,10 @@
#if !defined(__ASSEMBLER__)
#include <sys/types.h>
#include <sys/cdefs.h>
-#endif /* !__ASSEMBLER__ */
+#if defined(_KERNEL) || defined(_OLIBC)
+#include <machine/syscall.h>
+#endif /* _KERNEL || _OLIBC */
+#endif
#define SYS_none 0
#define SYS_exit 1
@@ -42,6 +45,15 @@
#define SYS_close 4
#define SYS_stat 5
#define SYS_sysctl 6
+#define SYS_write 7
+#define SYS_spawn 8
+#define SYS_reboot 9
+#define SYS_mmap 10
+#define SYS_munmap 11
+#define SYS_access 12
+#define SYS_lseek 13
+#define SYS_sleep 14
+#define SYS_inject 15
#if defined(_KERNEL)
/* Syscall return value and arg type */
@@ -63,76 +75,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_ */