1#ifndef XTF_X86_32_HYPERCALL_H 
    2#define XTF_X86_32_HYPERCALL_H 
   10#define _hypercall32_0(type, hcall)                                     \ 
   14            "call hypercall_page + %c[offset]"                          \
 
   16            : [offset] "i" (hcall * 32)                                 \
 
   21#define _hypercall32_1(type, hcall, a1)                                 \ 
   23        long res, _a1 = (long)(a1);                                     \ 
   25            "call hypercall_page + %c[offset]"                          \
 
   26            : "=a" (res), "+b" (_a1)                                    \
 
   27            : [offset] "i" (hcall * 32)                                 \
 
   32#define _hypercall32_2(type, hcall, a1, a2)                             \ 
   34        long res, _a1 = (long)(a1), _a2 = (long)(a2);                   \ 
   36            "call hypercall_page + %c[offset]"                          \
 
   37            : "=a" (res), "+b" (_a1), "+c" (_a2)                        \
 
   38            : [offset] "i" (hcall * 32)                                 \
 
   43#define _hypercall32_3(type, hcall, a1, a2, a3)                         \ 
   45        long res, _a1 = (long)(a1), _a2 = (long)(a2), _a3 = (long)(a3); \ 
   47            "call hypercall_page + %c[offset]"                          \
 
   48            : "=a" (res), "+b" (_a1), "+c" (_a2), "+d" (_a3)            \
 
   49            : [offset] "i" (hcall * 32)                                 \
 
   54#define _hypercall32_4(type, hcall, a1, a2, a3, a4)                     \ 
   56        long res, _a1 = (long)(a1), _a2 = (long)(a2), _a3 = (long)(a3), \ 
   59            "call hypercall_page + %c[offset]"                          \
 
   60            : "=a" (res), "+b" (_a1), "+c" (_a2), "+d" (_a3),           \
 
   62            : [offset] "i" (hcall * 32)                                 \
 
   67#define _hypercall32_5(type, hcall, a1, a2, a3, a4, a5)                 \ 
   69        long res, _a1 = (long)(a1), _a2 = (long)(a2), _a3 = (long)(a3), \ 
   70            _a4 = (long)(a4), _a5 = (long)(a5);                         \ 
   72            "call hypercall_page + %c[offset]"                          \
 
   73            : "=a" (res), "+b" (_a1), "+c" (_a2), "+d" (_a3),           \
 
   74              "+S" (_a4), "+D" (_a5)                                    \
 
   75            : [offset] "i" (hcall * 32)                                 \