18 #ifndef _LIB_COBALT_BLACKFIN_SYSCALL_H
19 #define _LIB_COBALT_BLACKFIN_SYSCALL_H
21 #include <cobalt/uapi/syscall.h>
25 #define __emit_syscall0(syscode, ...) \
28 __asm__ __volatile__ ( \
36 #define __emit_syscall1(syscode, a1, ...) \
37 __emit_syscall0(syscode, "q0"(a1), ##__VA_ARGS__)
38 #define __emit_syscall2(syscode, a1, a2, ...) \
39 __emit_syscall1(syscode, a1, "q1"(a2), ##__VA_ARGS__)
40 #define __emit_syscall3(syscode, a1, a2, a3, ...) \
41 __emit_syscall2(syscode, a1, a2, "q2"(a3), ##__VA_ARGS__)
42 #define __emit_syscall4(syscode, a1, a2, a3, a4, ...) \
43 __emit_syscall3(syscode, a1, a2, a3, "q3"(a4), ##__VA_ARGS__)
44 #define __emit_syscall5(syscode, a1, a2, a3, a4, a5, ...) \
45 __emit_syscall4(syscode, a1, a2, a3, a4, "q4"(a5), ##__VA_ARGS__)
47 #define XENOMAI_DO_SYSCALL(nr, op, args...) \
48 __emit_syscall##nr(__xn_syscode(op), ##args)
50 #define XENOMAI_SYSCALL0(op) XENOMAI_DO_SYSCALL(0,op)
51 #define XENOMAI_SYSCALL1(op,a1) XENOMAI_DO_SYSCALL(1,op,a1)
52 #define XENOMAI_SYSCALL2(op,a1,a2) XENOMAI_DO_SYSCALL(2,op,a1,a2)
53 #define XENOMAI_SYSCALL3(op,a1,a2,a3) XENOMAI_DO_SYSCALL(3,op,a1,a2,a3)
54 #define XENOMAI_SYSCALL4(op,a1,a2,a3,a4) XENOMAI_DO_SYSCALL(4,op,a1,a2,a3,a4)
55 #define XENOMAI_SYSCALL5(op,a1,a2,a3,a4,a5) XENOMAI_DO_SYSCALL(5,op,a1,a2,a3,a4,a5)
56 #define XENOMAI_SYSBIND(breq) XENOMAI_DO_SYSCALL(1,sc_cobalt_bind,breq)