Pristine Ack-5.5
[Ack-5.5.git] / mach / sparc_solaris / libsys / SYS.h
1 /*
2 SYS.h
3 */
4
5 #ifndef SYS_H
6 #define SYS_H
7
8 #define SYS_call_0(x) \
9         LABEL_(x); \
10         BODY(x)
11
12 #define _SYS_call_0(x) \
13         LABEL__(x); \
14         BODY(x)
15
16 #define SYS_call_1(x) \
17         LABEL_(x); \
18         ENTRY1; \
19         BODY(x)
20
21 #define _SYS_call_1(x) \
22         LABEL__(x); \
23         ENTRY1; \
24         BODY(x)
25
26 #define SYS_call_2(x) \
27         LABEL_(x); \
28         ENTRY2; \
29         BODY(x)
30
31 #define _SYS_call_2(x) \
32         LABEL__(x); \
33         ENTRY2; \
34         BODY(x)
35
36 #define SYS_call_3(x) \
37         LABEL_(x); \
38         ENTRY3; \
39         BODY(x)
40
41 #define _SYS_call_3(x) \
42         LABEL__(x); \
43         ENTRY3; \
44         BODY(x)
45
46 #define SYS_call_4(x) \
47         LABEL_(x); \
48         ENTRY4; \
49         BODY(x)
50
51 #define _SYS_call_4(x) \
52         LABEL__(x); \
53         ENTRY4; \
54         BODY(x)
55
56 #define SYS_call_5(x) \
57         LABEL_(x); \
58         ENTRY5; \
59         BODY(x)
60
61 #define _SYS_call_5(x) \
62         LABEL__(x); \
63         ENTRY5; \
64         BODY(x)
65
66 #define SYS_call_6(x) \
67         LABEL_(x); \
68         ENTRY6; \
69         BODY(x)
70
71 #define _SYS_call_6(x) \
72         LABEL__(x); \
73         ENTRY6; \
74         BODY(x)
75
76 #define BODY(x) \
77         b x; \
78         nop
79
80 #if __STDC__
81 #define LABEL_(x) \
82         .global $ ## x; \
83         $ ## x:
84 #define LABEL__(x) \
85         .global $_ ## x; \
86         $_ ## x:
87 #else
88 #define LABEL_(x) \
89         .global $/**/x; \
90         $/**/x:
91 #define LABEL__(x) \
92         .global $_/**/x; \
93         $_/**/x:
94 #endif
95
96 #define ENTRY1 \
97         ld      [%l0], %o0 \
98
99 #define ENTRY2 \
100         ENTRY1; \
101         ld      [%l0+4], %o1 \
102
103 #define ENTRY3 \
104         ENTRY2; \
105         ld      [%l0+8], %o2 \
106
107 #define ENTRY4 \
108         ENTRY3; \
109         ld      [%l0+12], %o3 \
110
111 #define ENTRY5 \
112         ENTRY4; \
113         ld      [%l0+16], %o4 \
114
115 #define ENTRY6 \
116         ENTRY5; \
117         ld      [%l0+20], %o5 \
118
119 #endif /* SYS_H */