5 register STR **st = stack->ary_array;
6 register int sp = arglast[1];
7 register int items = arglast[2] - sp;
9 unsigned long arg[14]; /* yes, we really need that many ! */
18 for (st += ++sp; items--; st++)
19 tainted |= (*st)->str_tainted;
20 st = stack->ary_array;
22 items = arglast[2] - sp;
24 TAINT_PROPER("syscall");
25 /* This probably won't work on machines where sizeof(long) != sizeof(int)
26 * or where sizeof(long) != sizeof(char*). But such machines will
27 * not likely have syscall implemented either, so who cares?
30 if (st[++sp]->str_nok || !i)
31 arg[i++] = (unsigned long)str_gnum(st[sp]);
34 arg[i++] = (unsigned long)st[sp]->str_ptr;
38 items = arglast[2] - sp;
41 fatal("Too few args to syscall");
43 retval = syscall(arg[0]);
46 retval = syscall(arg[0],arg[1]);
49 retval = syscall(arg[0],arg[1],arg[2]);
52 retval = syscall(arg[0],arg[1],arg[2],arg[3]);
55 retval = syscall(arg[0],arg[1],arg[2],arg[3],arg[4]);
58 retval = syscall(arg[0],arg[1],arg[2],arg[3],arg[4],arg[5]);
61 retval = syscall(arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6]);
64 retval = syscall(arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6],
69 retval = syscall(arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6],
73 retval = syscall(arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6],
74 arg[7], arg[8], arg[9]);
77 retval = syscall(arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6],
78 arg[7], arg[8], arg[9], arg[10]);
81 retval = syscall(arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6],
82 arg[7], arg[8], arg[9], arg[10], arg[11]);
85 retval = syscall(arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6],
86 arg[7], arg[8], arg[9], arg[10], arg[11], arg[12]);
89 retval = syscall(arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6],
90 arg[7], arg[8], arg[9], arg[10], arg[11], arg[12], arg[13]);
96 fatal("syscall() unimplemented");