]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/ppc64/twi_tdi.c
update
[l4.git] / l4 / pkg / valgrind / src / valgrind-3.6.0-svn / none / tests / ppc64 / twi_tdi.c
1
2 #include <stdio.h>
3 #include <signal.h>
4 #include <setjmp.h>
5 #include <string.h>
6 #include <assert.h>
7
8 static jmp_buf env_sigtrap;
9 static void handler_sigtrap ( int x ) { longjmp(env_sigtrap,1); }
10
11 void try ( char* who, void(*maybe_traps)(long), long arg )
12 {
13    struct sigaction tmp_act;
14    int r, trapped = 0;
15    memset(&tmp_act, 0, sizeof(tmp_act));
16    tmp_act.sa_handler = handler_sigtrap;
17    sigemptyset(&tmp_act.sa_mask);
18    tmp_act.sa_flags = SA_NODEFER;
19    r = sigaction(SIGTRAP, &tmp_act, NULL);
20    assert(r == 0);
21    if (setjmp(env_sigtrap)) {
22       trapped = 1;
23    } else {
24       maybe_traps(arg);
25    }
26    signal(SIGTRAP, SIG_DFL);
27
28    printf("%s(%4lld) -> %s\n", who, (long long int)arg, 
29           trapped ? "TRAP" : "no trap" );
30 }
31
32 static void twi_0_neg100 ( long n ) {
33   __asm__ __volatile__("twi 0, %0,-100"
34                        : /*out*/ : /*in*/ "r" (n) );
35 }
36 static void twi_1_neg100 ( long n ) {
37   __asm__ __volatile__("twi 1, %0,-100"
38                        : /*out*/ : /*in*/ "r" (n) );
39 }
40 static void twi_2_neg100 ( long n ) {
41   __asm__ __volatile__("twi 2, %0,-100"
42                        : /*out*/ : /*in*/ "r" (n) );
43 }
44 static void twi_3_neg100 ( long n ) {
45   __asm__ __volatile__("twi 3, %0,-100"
46                        : /*out*/ : /*in*/ "r" (n) );
47 }
48 static void twi_4_neg100 ( long n ) {
49   __asm__ __volatile__("twi 4, %0,-100"
50                        : /*out*/ : /*in*/ "r" (n) );
51 }
52 static void twi_5_neg100 ( long n ) {
53   __asm__ __volatile__("twi 5, %0,-100"
54                        : /*out*/ : /*in*/ "r" (n) );
55 }
56 static void twi_6_neg100 ( long n ) {
57   __asm__ __volatile__("twi 6, %0,-100"
58                        : /*out*/ : /*in*/ "r" (n) );
59 }
60 static void twi_7_neg100 ( long n ) {
61   __asm__ __volatile__("twi 7, %0,-100"
62                        : /*out*/ : /*in*/ "r" (n) );
63 }
64 static void twi_8_neg100 ( long n ) {
65   __asm__ __volatile__("twi 8, %0,-100"
66                        : /*out*/ : /*in*/ "r" (n) );
67 }
68 static void twi_9_neg100 ( long n ) {
69   __asm__ __volatile__("twi 9, %0,-100"
70                        : /*out*/ : /*in*/ "r" (n) );
71 }
72 static void twi_10_neg100 ( long n ) {
73   __asm__ __volatile__("twi 10, %0,-100"
74                        : /*out*/ : /*in*/ "r" (n) );
75 }
76 static void twi_11_neg100 ( long n ) {
77   __asm__ __volatile__("twi 11, %0,-100"
78                        : /*out*/ : /*in*/ "r" (n) );
79 }
80 static void twi_12_neg100 ( long n ) {
81   __asm__ __volatile__("twi 12, %0,-100"
82                        : /*out*/ : /*in*/ "r" (n) );
83 }
84 static void twi_13_neg100 ( long n ) {
85   __asm__ __volatile__("twi 13, %0,-100"
86                        : /*out*/ : /*in*/ "r" (n) );
87 }
88 static void twi_14_neg100 ( long n ) {
89   __asm__ __volatile__("twi 14, %0,-100"
90                        : /*out*/ : /*in*/ "r" (n) );
91 }
92 static void twi_15_neg100 ( long n ) {
93   __asm__ __volatile__("twi 15, %0,-100"
94                        : /*out*/ : /*in*/ "r" (n) );
95 }
96 static void twi_16_neg100 ( long n ) {
97   __asm__ __volatile__("twi 16, %0,-100"
98                        : /*out*/ : /*in*/ "r" (n) );
99 }
100 static void twi_17_neg100 ( long n ) {
101   __asm__ __volatile__("twi 17, %0,-100"
102                        : /*out*/ : /*in*/ "r" (n) );
103 }
104 static void twi_18_neg100 ( long n ) {
105   __asm__ __volatile__("twi 18, %0,-100"
106                        : /*out*/ : /*in*/ "r" (n) );
107 }
108 static void twi_19_neg100 ( long n ) {
109   __asm__ __volatile__("twi 19, %0,-100"
110                        : /*out*/ : /*in*/ "r" (n) );
111 }
112 static void twi_20_neg100 ( long n ) {
113   __asm__ __volatile__("twi 20, %0,-100"
114                        : /*out*/ : /*in*/ "r" (n) );
115 }
116 static void twi_21_neg100 ( long n ) {
117   __asm__ __volatile__("twi 21, %0,-100"
118                        : /*out*/ : /*in*/ "r" (n) );
119 }
120 static void twi_22_neg100 ( long n ) {
121   __asm__ __volatile__("twi 22, %0,-100"
122                        : /*out*/ : /*in*/ "r" (n) );
123 }
124 static void twi_23_neg100 ( long n ) {
125   __asm__ __volatile__("twi 23, %0,-100"
126                        : /*out*/ : /*in*/ "r" (n) );
127 }
128 static void twi_24_neg100 ( long n ) {
129   __asm__ __volatile__("twi 24, %0,-100"
130                        : /*out*/ : /*in*/ "r" (n) );
131 }
132 static void twi_25_neg100 ( long n ) {
133   __asm__ __volatile__("twi 25, %0,-100"
134                        : /*out*/ : /*in*/ "r" (n) );
135 }
136 static void twi_26_neg100 ( long n ) {
137   __asm__ __volatile__("twi 26, %0,-100"
138                        : /*out*/ : /*in*/ "r" (n) );
139 }
140 static void twi_27_neg100 ( long n ) {
141   __asm__ __volatile__("twi 27, %0,-100"
142                        : /*out*/ : /*in*/ "r" (n) );
143 }
144 static void twi_28_neg100 ( long n ) {
145   __asm__ __volatile__("twi 28, %0,-100"
146                        : /*out*/ : /*in*/ "r" (n) );
147 }
148 static void twi_29_neg100 ( long n ) {
149   __asm__ __volatile__("twi 29, %0,-100"
150                        : /*out*/ : /*in*/ "r" (n) );
151 }
152 static void twi_30_neg100 ( long n ) {
153   __asm__ __volatile__("twi 30, %0,-100"
154                        : /*out*/ : /*in*/ "r" (n) );
155 }
156 static void twi_31_neg100 ( long n ) {
157   __asm__ __volatile__("twi 31, %0,-100"
158                        : /*out*/ : /*in*/ "r" (n) );
159 }
160
161 #if defined(__powerpc64__)
162
163 static void tdi_0_neg100 ( long n ) {
164   __asm__ __volatile__("tdi 0, %0,-100"
165                        : /*out*/ : /*in*/ "r" (n) );
166 }
167 static void tdi_1_neg100 ( long n ) {
168   __asm__ __volatile__("tdi 1, %0,-100"
169                        : /*out*/ : /*in*/ "r" (n) );
170 }
171 static void tdi_2_neg100 ( long n ) {
172   __asm__ __volatile__("tdi 2, %0,-100"
173                        : /*out*/ : /*in*/ "r" (n) );
174 }
175 static void tdi_3_neg100 ( long n ) {
176   __asm__ __volatile__("tdi 3, %0,-100"
177                        : /*out*/ : /*in*/ "r" (n) );
178 }
179 static void tdi_4_neg100 ( long n ) {
180   __asm__ __volatile__("tdi 4, %0,-100"
181                        : /*out*/ : /*in*/ "r" (n) );
182 }
183 static void tdi_5_neg100 ( long n ) {
184   __asm__ __volatile__("tdi 5, %0,-100"
185                        : /*out*/ : /*in*/ "r" (n) );
186 }
187 static void tdi_6_neg100 ( long n ) {
188   __asm__ __volatile__("tdi 6, %0,-100"
189                        : /*out*/ : /*in*/ "r" (n) );
190 }
191 static void tdi_7_neg100 ( long n ) {
192   __asm__ __volatile__("tdi 7, %0,-100"
193                        : /*out*/ : /*in*/ "r" (n) );
194 }
195 static void tdi_8_neg100 ( long n ) {
196   __asm__ __volatile__("tdi 8, %0,-100"
197                        : /*out*/ : /*in*/ "r" (n) );
198 }
199 static void tdi_9_neg100 ( long n ) {
200   __asm__ __volatile__("tdi 9, %0,-100"
201                        : /*out*/ : /*in*/ "r" (n) );
202 }
203 static void tdi_10_neg100 ( long n ) {
204   __asm__ __volatile__("tdi 10, %0,-100"
205                        : /*out*/ : /*in*/ "r" (n) );
206 }
207 static void tdi_11_neg100 ( long n ) {
208   __asm__ __volatile__("tdi 11, %0,-100"
209                        : /*out*/ : /*in*/ "r" (n) );
210 }
211 static void tdi_12_neg100 ( long n ) {
212   __asm__ __volatile__("tdi 12, %0,-100"
213                        : /*out*/ : /*in*/ "r" (n) );
214 }
215 static void tdi_13_neg100 ( long n ) {
216   __asm__ __volatile__("tdi 13, %0,-100"
217                        : /*out*/ : /*in*/ "r" (n) );
218 }
219 static void tdi_14_neg100 ( long n ) {
220   __asm__ __volatile__("tdi 14, %0,-100"
221                        : /*out*/ : /*in*/ "r" (n) );
222 }
223 static void tdi_15_neg100 ( long n ) {
224   __asm__ __volatile__("tdi 15, %0,-100"
225                        : /*out*/ : /*in*/ "r" (n) );
226 }
227 static void tdi_16_neg100 ( long n ) {
228   __asm__ __volatile__("tdi 16, %0,-100"
229                        : /*out*/ : /*in*/ "r" (n) );
230 }
231 static void tdi_17_neg100 ( long n ) {
232   __asm__ __volatile__("tdi 17, %0,-100"
233                        : /*out*/ : /*in*/ "r" (n) );
234 }
235 static void tdi_18_neg100 ( long n ) {
236   __asm__ __volatile__("tdi 18, %0,-100"
237                        : /*out*/ : /*in*/ "r" (n) );
238 }
239 static void tdi_19_neg100 ( long n ) {
240   __asm__ __volatile__("tdi 19, %0,-100"
241                        : /*out*/ : /*in*/ "r" (n) );
242 }
243 static void tdi_20_neg100 ( long n ) {
244   __asm__ __volatile__("tdi 20, %0,-100"
245                        : /*out*/ : /*in*/ "r" (n) );
246 }
247 static void tdi_21_neg100 ( long n ) {
248   __asm__ __volatile__("tdi 21, %0,-100"
249                        : /*out*/ : /*in*/ "r" (n) );
250 }
251 static void tdi_22_neg100 ( long n ) {
252   __asm__ __volatile__("tdi 22, %0,-100"
253                        : /*out*/ : /*in*/ "r" (n) );
254 }
255 static void tdi_23_neg100 ( long n ) {
256   __asm__ __volatile__("tdi 23, %0,-100"
257                        : /*out*/ : /*in*/ "r" (n) );
258 }
259 static void tdi_24_neg100 ( long n ) {
260   __asm__ __volatile__("tdi 24, %0,-100"
261                        : /*out*/ : /*in*/ "r" (n) );
262 }
263 static void tdi_25_neg100 ( long n ) {
264   __asm__ __volatile__("tdi 25, %0,-100"
265                        : /*out*/ : /*in*/ "r" (n) );
266 }
267 static void tdi_26_neg100 ( long n ) {
268   __asm__ __volatile__("tdi 26, %0,-100"
269                        : /*out*/ : /*in*/ "r" (n) );
270 }
271 static void tdi_27_neg100 ( long n ) {
272   __asm__ __volatile__("tdi 27, %0,-100"
273                        : /*out*/ : /*in*/ "r" (n) );
274 }
275 static void tdi_28_neg100 ( long n ) {
276   __asm__ __volatile__("tdi 28, %0,-100"
277                        : /*out*/ : /*in*/ "r" (n) );
278 }
279 static void tdi_29_neg100 ( long n ) {
280   __asm__ __volatile__("tdi 29, %0,-100"
281                        : /*out*/ : /*in*/ "r" (n) );
282 }
283 static void tdi_30_neg100 ( long n ) {
284   __asm__ __volatile__("tdi 30, %0,-100"
285                        : /*out*/ : /*in*/ "r" (n) );
286 }
287 static void tdi_31_neg100 ( long n ) {
288   __asm__ __volatile__("tdi 31, %0,-100"
289                        : /*out*/ : /*in*/ "r" (n) );
290 }
291
292 #endif
293
294
295 int main ( void )
296 {
297 #define TWI_GROUP(cmp) \
298    try("twi_" #cmp "_neg100", twi_##cmp##_neg100, -150); \
299    try("twi_" #cmp "_neg100", twi_##cmp##_neg100, -100); \
300    try("twi_" #cmp "_neg100", twi_##cmp##_neg100,  -50);
301
302    TWI_GROUP(0);
303    TWI_GROUP(1);
304    TWI_GROUP(2);
305    TWI_GROUP(3);
306    TWI_GROUP(4);
307    TWI_GROUP(5);
308    TWI_GROUP(6);
309    TWI_GROUP(7);
310    TWI_GROUP(8);
311    TWI_GROUP(9);
312    TWI_GROUP(10);
313    TWI_GROUP(11);
314    TWI_GROUP(12);
315    TWI_GROUP(13);
316    TWI_GROUP(14);
317    TWI_GROUP(15);
318    TWI_GROUP(16);
319    TWI_GROUP(17);
320    TWI_GROUP(18);
321    TWI_GROUP(19);
322    TWI_GROUP(20);
323    TWI_GROUP(21);
324    TWI_GROUP(22);
325    TWI_GROUP(23);
326    TWI_GROUP(24);
327    TWI_GROUP(25);
328    TWI_GROUP(26);
329    TWI_GROUP(27);
330    TWI_GROUP(28);
331    TWI_GROUP(29);
332    TWI_GROUP(30);
333    TWI_GROUP(31);
334 #if defined(__powerpc64__)
335 #define TDI_GROUP(cmp) \
336    try("tdi_" #cmp "_neg100", tdi_##cmp##_neg100, -150); \
337    try("tdi_" #cmp "_neg100", tdi_##cmp##_neg100, -100); \
338    try("tdi_" #cmp "_neg100", tdi_##cmp##_neg100,  -50);
339
340    TDI_GROUP(0);
341    TDI_GROUP(1);
342    TDI_GROUP(2);
343    TDI_GROUP(3);
344    TDI_GROUP(4);
345    TDI_GROUP(5);
346    TDI_GROUP(6);
347    TDI_GROUP(7);
348    TDI_GROUP(8);
349    TDI_GROUP(9);
350    TDI_GROUP(10);
351    TDI_GROUP(11);
352    TDI_GROUP(12);
353    TDI_GROUP(13);
354    TDI_GROUP(14);
355    TDI_GROUP(15);
356    TDI_GROUP(16);
357    TDI_GROUP(17);
358    TDI_GROUP(18);
359    TDI_GROUP(19);
360    TDI_GROUP(20);
361    TDI_GROUP(21);
362    TDI_GROUP(22);
363    TDI_GROUP(23);
364    TDI_GROUP(24);
365    TDI_GROUP(25);
366    TDI_GROUP(26);
367    TDI_GROUP(27);
368    TDI_GROUP(28);
369    TDI_GROUP(29);
370    TDI_GROUP(30);
371    TDI_GROUP(31);
372 #endif
373    return 0;
374 }