1 /* Test for utimesys() syscall which is available on illumos
2    and older Solaris.
3  */
4 
5 #include "scalar.h"
6 
7 __attribute__((noinline))
sys_utimesys(void)8 static void sys_utimesys(void)
9 {
10    GO(SYS_utimesys, "(FUTIMENS) 3s 1m");
11    SY(SYS_utimesys, x0 + 0, x0 - 1, x0 + 1); FAIL;
12 }
13 
14 __attribute__((noinline))
sys_utimesys2(void)15 static void sys_utimesys2(void)
16 {
17    GO(SYS_utimesys, "(FUTIMENS) 3s 0m");
18    SY(SYS_utimesys, x0 + 0, x0 - 1, x0 + NULL); FAIL;
19 }
20 
21 __attribute__((noinline))
sys_utimesys3(void)22 static void sys_utimesys3(void)
23 {
24    GO(SYS_utimesys, "(UTIMENSAT) 5s 2m");
25    SY(SYS_utimesys, x0 + 1, x0 - 1, x0 + 1, x0 + 1, x0); FAIL;
26 }
27 
28 __attribute__((noinline))
sys_utimesys4(void)29 static void sys_utimesys4(void)
30 {
31    GO(SYS_utimesys, "(UTIMENSAT) 5s 0m");
32    SY(SYS_utimesys, x0 + 1, x0 - 1, x0 + NULL, x0 + NULL, x0); FAIL;
33 }
34 
main(void)35 int main(void)
36 {
37    /* Uninitialised, but we know px[0] is 0x0. */
38    long *px = malloc(sizeof(long));
39    x0 = px[0];
40 
41    /* SYS_utimesys             110 */
42    sys_utimesys();
43    sys_utimesys2();
44    sys_utimesys3();
45    sys_utimesys4();
46 
47    return 0;
48 }
49 
50