1 | #define __NR_io_setup 1238 |
---|
2 | #define __NR_io_destroy 1239 |
---|
3 | #define __NR_io_getevents 1240 |
---|
4 | #define __NR_io_submit 1241 |
---|
5 | #define __NR_io_cancel 1242 |
---|
6 | |
---|
7 | #define __ia64_raw_syscall(fname, sname) \ |
---|
8 | __asm__ (".text\n" \ |
---|
9 | ".globl " SYMSTR(fname) "\n" \ |
---|
10 | ".proc " SYMSTR(fname) "\n" \ |
---|
11 | SYMSTR(fname) ":\n" \ |
---|
12 | " mov r15=" SYMSTR( __NR_ ## sname ) "\n" \ |
---|
13 | " break 0x100000\n" \ |
---|
14 | " ;;\n" \ |
---|
15 | " cmp.eq p6,p0=-1,r10\n" \ |
---|
16 | " ;;\n" \ |
---|
17 | " (p6) sub r8=0,r8\n" \ |
---|
18 | " br.ret.sptk.few b0\n" \ |
---|
19 | ".size " SYMSTR(fname) ", . - " SYMSTR(fname) "\n" \ |
---|
20 | ".endp " SYMSTR(fname) "\n" \ |
---|
21 | ); |
---|
22 | |
---|
23 | #define io_syscall0(type, name) \ |
---|
24 | extern type name(void); \ |
---|
25 | __ia64_raw_syscall(name); |
---|
26 | |
---|
27 | #define io_syscall1(type, fname, sname, type1, arg1) \ |
---|
28 | extern type fname(type1 arg1); \ |
---|
29 | __ia64_raw_syscall(fname, sname); |
---|
30 | |
---|
31 | #define io_syscall2(type, fname, sname, type1, arg1, type2, arg2) \ |
---|
32 | extern type fname(type1 arg1, type2 arg2); \ |
---|
33 | __ia64_raw_syscall(fname, sname); |
---|
34 | |
---|
35 | #define io_syscall3(type, fname, sname, type1, arg1, type2, arg2, type3, arg3) \ |
---|
36 | extern type fname(type1 arg1, type2 arg2, type3 arg3); \ |
---|
37 | __ia64_raw_syscall(fname, sname); |
---|
38 | |
---|
39 | #define io_syscall4(type, fname, sname, type1, arg1, type2, arg2, type3, arg3, type4, arg4) \ |
---|
40 | extern type fname(type1 arg1, type2 arg2, type3 arg3, type4 arg4); \ |
---|
41 | __ia64_raw_syscall(fname, sname); |
---|
42 | |
---|
43 | #define io_syscall5(type, fname, sname, type1, arg1, type2, arg2, type3, arg3, type4, arg4, type5, arg5) \ |
---|
44 | extern type fname(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5); \ |
---|
45 | __ia64_raw_syscall(fname, sname); |
---|