| 1 |
|
| 2 | |
| 3 | * syscall() definition for NOLIBC
|
| 4 | * Copyright (C) 2024 Thomas Weißschuh <[email protected]>
|
| 5 |
|
| 6 |
|
| 7 |
|
| 8 | #include "../nolibc.h"
|
| 9 |
|
| 10 | #ifndef _NOLIBC_SYS_SYSCALL_H
|
| 11 | #define _NOLIBC_SYS_SYSCALL_H
|
| 12 |
|
| 13 | #define ___nolibc_syscall_narg(_0, _1, _2, _3, _4, _5, _6, N, ...) N
|
| 14 | #define __nolibc_syscall_narg(...) ___nolibc_syscall_narg(__VA_ARGS__, 6, 5, 4, 3, 2, 1, 0)
|
| 15 | #define __nolibc_syscall(N, ...) __nolibc_syscall##N(__VA_ARGS__)
|
| 16 | #define __nolibc_syscall_n(N, ...) __nolibc_syscall(N, __VA_ARGS__)
|
| 17 | #define _syscall(...) __nolibc_syscall_n(__nolibc_syscall_narg(__VA_ARGS__), ##__VA_ARGS__)
|
| 18 | #define syscall(...) __sysret(_syscall(__VA_ARGS__))
|
| 19 |
|
| 20 | #endif
|