18 #ifndef _LIB_COBALT_NIOS2_SYSCALL_H
19 #define _LIB_COBALT_NIOS2_SYSCALL_H
21 #include <cobalt/uapi/syscall.h>
24 #define __emit_syscall0(syscode) \
28 __asm__ __volatile__ ( \
39 #define __emit_syscall1(syscode, a1) \
43 __asm__ __volatile__ ( \
51 : "r2", "r4", "memory" \
56 #define __emit_syscall2(syscode, a1, a2) \
60 __asm__ __volatile__ ( \
70 : "r2", "r4", "r5", "memory" \
75 #define __emit_syscall3(syscode, a1, a2, a3) \
79 __asm__ __volatile__ ( \
91 : "r2", "r4", "r5", "r6", "memory" \
96 #define __emit_syscall4(syscode, a1, a2, a3, a4) \
100 __asm__ __volatile__ ( \
114 : "r2", "r4", "r5", "r6", "r7", "memory" \
119 #define __emit_syscall5(syscode, a1, a2, a3, a4, a5) \
123 __asm__ __volatile__ ( \
139 : "r2", "r4", "r5", "r6", "r7", "r8", "memory" \
144 #define XENOMAI_DO_SYSCALL(nr, op, args...) \
145 __emit_syscall##nr(__xn_syscode(op), ##args)
147 #define XENOMAI_SYSCALL0(op) XENOMAI_DO_SYSCALL(0,op)
148 #define XENOMAI_SYSCALL1(op,a1) XENOMAI_DO_SYSCALL(1,op,a1)
149 #define XENOMAI_SYSCALL2(op,a1,a2) XENOMAI_DO_SYSCALL(2,op,a1,a2)
150 #define XENOMAI_SYSCALL3(op,a1,a2,a3) XENOMAI_DO_SYSCALL(3,op,a1,a2,a3)
151 #define XENOMAI_SYSCALL4(op,a1,a2,a3,a4) XENOMAI_DO_SYSCALL(4,op,a1,a2,a3,a4)
152 #define XENOMAI_SYSCALL5(op,a1,a2,a3,a4,a5) XENOMAI_DO_SYSCALL(5,op,a1,a2,a3,a4,a5)
153 #define XENOMAI_SYSBIND(breq) XENOMAI_DO_SYSCALL(1,sc_cobalt_bind,breq)