1 /* Simple hypercall utility for common convention */
2 /* Copyright (c) 2015 Peter Dinda */
8 int main(int argc, char *argv[])
10 unsigned long long num, a1, a2, a3, a4, a5, a6, a7, a8;
11 unsigned long long rc;
13 if (argc<2 || argc>10) {
14 printf("usage: hypercall <number> [args (up to 8)]\n");
15 printf("The hypercall number and arguments are in hex\n");
19 num = strtoull(argv[1],0,16);
22 a1=strtoull(argv[2],0,16);
27 a2=strtoull(argv[3],0,16);
32 a3=strtoull(argv[4],0,16);
37 a4=strtoull(argv[5],0,16);
42 a5=strtoull(argv[6],0,16);
47 a6=strtoull(argv[7],0,16);
52 a7=strtoull(argv[8],0,16);
57 a8=strtoull(argv[9],0,16);
62 printf("Executing hcall 0x%llx with arguments a1=0x%llx, a2=0x%llx, a3=0x%llx, a4=0x%llx, a5=0x%llx, a6=0x%llx, a7=0x%llx, a8=0x%llx\n", num, a1, a2, a3, a4, a5, a6, a7, a8);
64 HCALL(rc,num,a1,a2,a3,a4,a5,a6,a7,a8);
66 printf("Return from hypercall was 0x%llx\n",rc);