21#error syscall-stubs.h requires SERVICE to be defined
24#error syscall-stubs.h requires SERVICE_ERROR to be defined
27#error syscall-stubs.h requires SERVICE_INIT to be defined
30static long syscall6(
long function,
long p1,
long p2,
long p3,
long p4,
long p5,
long p6) {
31 long eax = ((SERVICE & 0xFFFF) << 16) | (function & 0xFFFF);
34 register long p5_r __asm__(
"r8") = p5;
35 register long p6_r __asm__(
"r9") = p6;
39 __asm__ __volatile__(
"syscall"
40 :
"=a"(ret),
"=b"(err)
41 :
"0"(eax),
"1"(p1),
"d"(p2),
"S"(p3),
"D"(p4),
"r"(p5_r),
"r"(p6_r)
42 :
"rcx",
"r11",
"memory");
50static long syscall6_err(
long function,
long p1,
long p2,
long p3,
long p4,
long p5,
long p6,
52 long eax = ((SERVICE & 0xFFFF) << 16) | (function & 0xFFFF);
54 register long p5_r __asm__(
"r8") = p5;
55 register long p6_r __asm__(
"r9") = p6;
58 __asm__ __volatile__(
"syscall"
59 :
"=a"(ret),
"=b"(*err)
60 :
"0"(eax),
"1"(p1),
"d"(p2),
"S"(p3),
"D"(p4),
"r"(p5_r),
"r"(p6_r)
61 :
"rcx",
"r11",
"memory");
66static long syscall6_for_service_err(
long service,
long function,
long p1,
long p2,
long p3,
67 long p4,
long p5,
long p6,
long* err) {
68 long eax = ((service & 0xFFFF) << 16) | (function & 0xFFFF);
70 register long p4_r __asm__(
"r10") = p4;
71 register long p5_r __asm__(
"r8") = p5;
72 register long p6_r __asm__(
"r9") = p6;
75 __asm__ __volatile__(
"syscall"
77 :
"0"(eax),
"D"(p1),
"S"(p2),
"d"(p3),
"r"(p4_r),
"r"(p5_r),
"r"(p6_r)
78 :
"rcx",
"r11",
"memory");
83static long syscall0(
long function) {
84 return syscall6(function, 0, 0, 0, 0, 0, 0);
87static long syscall1(
long function,
long p1) {
88 return syscall6(function, p1, 0, 0, 0, 0, 0);
91static long syscall2(
long function,
long p1,
long p2) {
92 return syscall6(function, p1, p2, 0, 0, 0, 0);
95static long syscall3(
long function,
long p1,
long p2,
long p3) {
96 return syscall6(function, p1, p2, p3, 0, 0, 0);
99static long syscall4(
long function,
long p1,
long p2,
long p3,
long p4) {
100 return syscall6(function, p1, p2, p3, p4, 0, 0);
103static long syscall5(
long function,
long p1,
long p2,
long p3,
long p4,
long p5) {
104 return syscall6(function, p1, p2, p3, p4, p5, 0);