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)