Unit testing framework and devicetree framework refactoring (#50)
[lunaix-os.git] / lunaix-os / includes / lunaix / syscall.h
1 #ifndef __LUNAIX_SYSCALL_H
2 #define __LUNAIX_SYSCALL_H
3
4 #include <usr/lunaix/syscallid.h>
5
6 #ifndef __ASM__
7
8 #define SYSCALL_ESTATUS(errno) -((errno) != 0)
9
10 #define asmlinkage __attribute__((regparm(0)))
11
12 #define __PARAM_MAP1(t1, p1) t1 p1
13 #define __PARAM_MAP2(t1, p1, ...) t1 p1, __PARAM_MAP1(__VA_ARGS__)
14 #define __PARAM_MAP3(t1, p1, ...) t1 p1, __PARAM_MAP2(__VA_ARGS__)
15 #define __PARAM_MAP4(t1, p1, ...) t1 p1, __PARAM_MAP3(__VA_ARGS__)
16 #define __PARAM_MAP5(t1, p1, ...) t1 p1, __PARAM_MAP4(__VA_ARGS__)
17 #define __PARAM_MAP6(t1, p1, ...) t1 p1, __PARAM_MAP5(__VA_ARGS__)
18
19 #define __DEFINE_LXSYSCALL(rettype, name) asmlinkage rettype __lxsys_##name()
20
21 #define __DEFINE_LXSYSCALL1(rettype, name, t1, p1)                             \
22     asmlinkage rettype __lxsys_##name(__PARAM_MAP1(t1, p1))
23
24 #define __DEFINE_LXSYSCALL2(rettype, name, t1, p1, t2, p2)                     \
25     asmlinkage rettype __lxsys_##name(__PARAM_MAP2(t1, p1, t2, p2))
26
27 #define __DEFINE_LXSYSCALL3(rettype, name, t1, p1, t2, p2, t3, p3)             \
28     asmlinkage rettype __lxsys_##name(__PARAM_MAP3(t1, p1, t2, p2, t3, p3))
29
30 #define __DEFINE_LXSYSCALL4(rettype, name, t1, p1, t2, p2, t3, p3, t4, p4)     \
31     asmlinkage rettype __lxsys_##name(                                         \
32       __PARAM_MAP4(t1, p1, t2, p2, t3, p3, t4, p4))
33
34 #define __DEFINE_LXSYSCALL5(                                                   \
35   rettype, name, t1, p1, t2, p2, t3, p3, t4, p4, t5, p5)                       \
36     asmlinkage rettype __lxsys_##name(                                         \
37       __PARAM_MAP5(t1, p1, t2, p2, t3, p3, t4, p4, t5, p5))
38
39 #endif
40 #endif /* __LUNAIX_SYSCALL_H */