1 // SPDX-License-Identifier: GPL-2.0
2
3 #include <linux/bpf.h>
4 #include <bpf/bpf_helpers.h>
5 #include "bpf_misc.h"
6
7 #if (defined(__TARGET_ARCH_arm64) || defined(__TARGET_ARCH_x86) || \
8 (defined(__TARGET_ARCH_riscv) && __riscv_xlen == 64)) && __clang_major__ >= 18
9
10 SEC("socket")
11 __description("SDIV32, non-zero imm divisor, check 1")
12 __success __success_unpriv __retval(-20)
sdiv32_non_zero_imm_1(void)13 __naked void sdiv32_non_zero_imm_1(void)
14 {
15 asm volatile (" \
16 w0 = -41; \
17 w0 s/= 2; \
18 exit; \
19 " ::: __clobber_all);
20 }
21
22 SEC("socket")
23 __description("SDIV32, non-zero imm divisor, check 2")
24 __success __success_unpriv __retval(-20)
sdiv32_non_zero_imm_2(void)25 __naked void sdiv32_non_zero_imm_2(void)
26 {
27 asm volatile (" \
28 w0 = 41; \
29 w0 s/= -2; \
30 exit; \
31 " ::: __clobber_all);
32 }
33
34 SEC("socket")
35 __description("SDIV32, non-zero imm divisor, check 3")
36 __success __success_unpriv __retval(20)
sdiv32_non_zero_imm_3(void)37 __naked void sdiv32_non_zero_imm_3(void)
38 {
39 asm volatile (" \
40 w0 = -41; \
41 w0 s/= -2; \
42 exit; \
43 " ::: __clobber_all);
44 }
45
46 SEC("socket")
47 __description("SDIV32, non-zero imm divisor, check 4")
48 __success __success_unpriv __retval(-21)
sdiv32_non_zero_imm_4(void)49 __naked void sdiv32_non_zero_imm_4(void)
50 {
51 asm volatile (" \
52 w0 = -42; \
53 w0 s/= 2; \
54 exit; \
55 " ::: __clobber_all);
56 }
57
58 SEC("socket")
59 __description("SDIV32, non-zero imm divisor, check 5")
60 __success __success_unpriv __retval(-21)
sdiv32_non_zero_imm_5(void)61 __naked void sdiv32_non_zero_imm_5(void)
62 {
63 asm volatile (" \
64 w0 = 42; \
65 w0 s/= -2; \
66 exit; \
67 " ::: __clobber_all);
68 }
69
70 SEC("socket")
71 __description("SDIV32, non-zero imm divisor, check 6")
72 __success __success_unpriv __retval(21)
sdiv32_non_zero_imm_6(void)73 __naked void sdiv32_non_zero_imm_6(void)
74 {
75 asm volatile (" \
76 w0 = -42; \
77 w0 s/= -2; \
78 exit; \
79 " ::: __clobber_all);
80 }
81
82 SEC("socket")
83 __description("SDIV32, non-zero imm divisor, check 7")
84 __success __success_unpriv __retval(21)
sdiv32_non_zero_imm_7(void)85 __naked void sdiv32_non_zero_imm_7(void)
86 {
87 asm volatile (" \
88 w0 = 42; \
89 w0 s/= 2; \
90 exit; \
91 " ::: __clobber_all);
92 }
93
94 SEC("socket")
95 __description("SDIV32, non-zero imm divisor, check 8")
96 __success __success_unpriv __retval(20)
sdiv32_non_zero_imm_8(void)97 __naked void sdiv32_non_zero_imm_8(void)
98 {
99 asm volatile (" \
100 w0 = 41; \
101 w0 s/= 2; \
102 exit; \
103 " ::: __clobber_all);
104 }
105
106 SEC("socket")
107 __description("SDIV32, non-zero reg divisor, check 1")
108 __success __success_unpriv __retval(-20)
sdiv32_non_zero_reg_1(void)109 __naked void sdiv32_non_zero_reg_1(void)
110 {
111 asm volatile (" \
112 w0 = -41; \
113 w1 = 2; \
114 w0 s/= w1; \
115 exit; \
116 " ::: __clobber_all);
117 }
118
119 SEC("socket")
120 __description("SDIV32, non-zero reg divisor, check 2")
121 __success __success_unpriv __retval(-20)
sdiv32_non_zero_reg_2(void)122 __naked void sdiv32_non_zero_reg_2(void)
123 {
124 asm volatile (" \
125 w0 = 41; \
126 w1 = -2; \
127 w0 s/= w1; \
128 exit; \
129 " ::: __clobber_all);
130 }
131
132 SEC("socket")
133 __description("SDIV32, non-zero reg divisor, check 3")
134 __success __success_unpriv __retval(20)
sdiv32_non_zero_reg_3(void)135 __naked void sdiv32_non_zero_reg_3(void)
136 {
137 asm volatile (" \
138 w0 = -41; \
139 w1 = -2; \
140 w0 s/= w1; \
141 exit; \
142 " ::: __clobber_all);
143 }
144
145 SEC("socket")
146 __description("SDIV32, non-zero reg divisor, check 4")
147 __success __success_unpriv __retval(-21)
sdiv32_non_zero_reg_4(void)148 __naked void sdiv32_non_zero_reg_4(void)
149 {
150 asm volatile (" \
151 w0 = -42; \
152 w1 = 2; \
153 w0 s/= w1; \
154 exit; \
155 " ::: __clobber_all);
156 }
157
158 SEC("socket")
159 __description("SDIV32, non-zero reg divisor, check 5")
160 __success __success_unpriv __retval(-21)
sdiv32_non_zero_reg_5(void)161 __naked void sdiv32_non_zero_reg_5(void)
162 {
163 asm volatile (" \
164 w0 = 42; \
165 w1 = -2; \
166 w0 s/= w1; \
167 exit; \
168 " ::: __clobber_all);
169 }
170
171 SEC("socket")
172 __description("SDIV32, non-zero reg divisor, check 6")
173 __success __success_unpriv __retval(21)
sdiv32_non_zero_reg_6(void)174 __naked void sdiv32_non_zero_reg_6(void)
175 {
176 asm volatile (" \
177 w0 = -42; \
178 w1 = -2; \
179 w0 s/= w1; \
180 exit; \
181 " ::: __clobber_all);
182 }
183
184 SEC("socket")
185 __description("SDIV32, non-zero reg divisor, check 7")
186 __success __success_unpriv __retval(21)
sdiv32_non_zero_reg_7(void)187 __naked void sdiv32_non_zero_reg_7(void)
188 {
189 asm volatile (" \
190 w0 = 42; \
191 w1 = 2; \
192 w0 s/= w1; \
193 exit; \
194 " ::: __clobber_all);
195 }
196
197 SEC("socket")
198 __description("SDIV32, non-zero reg divisor, check 8")
199 __success __success_unpriv __retval(20)
sdiv32_non_zero_reg_8(void)200 __naked void sdiv32_non_zero_reg_8(void)
201 {
202 asm volatile (" \
203 w0 = 41; \
204 w1 = 2; \
205 w0 s/= w1; \
206 exit; \
207 " ::: __clobber_all);
208 }
209
210 SEC("socket")
211 __description("SDIV64, non-zero imm divisor, check 1")
212 __success __success_unpriv __retval(-20)
sdiv64_non_zero_imm_1(void)213 __naked void sdiv64_non_zero_imm_1(void)
214 {
215 asm volatile (" \
216 r0 = -41; \
217 r0 s/= 2; \
218 exit; \
219 " ::: __clobber_all);
220 }
221
222 SEC("socket")
223 __description("SDIV64, non-zero imm divisor, check 2")
224 __success __success_unpriv __retval(-20)
sdiv64_non_zero_imm_2(void)225 __naked void sdiv64_non_zero_imm_2(void)
226 {
227 asm volatile (" \
228 r0 = 41; \
229 r0 s/= -2; \
230 exit; \
231 " ::: __clobber_all);
232 }
233
234 SEC("socket")
235 __description("SDIV64, non-zero imm divisor, check 3")
236 __success __success_unpriv __retval(20)
sdiv64_non_zero_imm_3(void)237 __naked void sdiv64_non_zero_imm_3(void)
238 {
239 asm volatile (" \
240 r0 = -41; \
241 r0 s/= -2; \
242 exit; \
243 " ::: __clobber_all);
244 }
245
246 SEC("socket")
247 __description("SDIV64, non-zero imm divisor, check 4")
248 __success __success_unpriv __retval(-21)
sdiv64_non_zero_imm_4(void)249 __naked void sdiv64_non_zero_imm_4(void)
250 {
251 asm volatile (" \
252 r0 = -42; \
253 r0 s/= 2; \
254 exit; \
255 " ::: __clobber_all);
256 }
257
258 SEC("socket")
259 __description("SDIV64, non-zero imm divisor, check 5")
260 __success __success_unpriv __retval(-21)
sdiv64_non_zero_imm_5(void)261 __naked void sdiv64_non_zero_imm_5(void)
262 {
263 asm volatile (" \
264 r0 = 42; \
265 r0 s/= -2; \
266 exit; \
267 " ::: __clobber_all);
268 }
269
270 SEC("socket")
271 __description("SDIV64, non-zero imm divisor, check 6")
272 __success __success_unpriv __retval(21)
sdiv64_non_zero_imm_6(void)273 __naked void sdiv64_non_zero_imm_6(void)
274 {
275 asm volatile (" \
276 r0 = -42; \
277 r0 s/= -2; \
278 exit; \
279 " ::: __clobber_all);
280 }
281
282 SEC("socket")
283 __description("SDIV64, non-zero reg divisor, check 1")
284 __success __success_unpriv __retval(-20)
sdiv64_non_zero_reg_1(void)285 __naked void sdiv64_non_zero_reg_1(void)
286 {
287 asm volatile (" \
288 r0 = -41; \
289 r1 = 2; \
290 r0 s/= r1; \
291 exit; \
292 " ::: __clobber_all);
293 }
294
295 SEC("socket")
296 __description("SDIV64, non-zero reg divisor, check 2")
297 __success __success_unpriv __retval(-20)
sdiv64_non_zero_reg_2(void)298 __naked void sdiv64_non_zero_reg_2(void)
299 {
300 asm volatile (" \
301 r0 = 41; \
302 r1 = -2; \
303 r0 s/= r1; \
304 exit; \
305 " ::: __clobber_all);
306 }
307
308 SEC("socket")
309 __description("SDIV64, non-zero reg divisor, check 3")
310 __success __success_unpriv __retval(20)
sdiv64_non_zero_reg_3(void)311 __naked void sdiv64_non_zero_reg_3(void)
312 {
313 asm volatile (" \
314 r0 = -41; \
315 r1 = -2; \
316 r0 s/= r1; \
317 exit; \
318 " ::: __clobber_all);
319 }
320
321 SEC("socket")
322 __description("SDIV64, non-zero reg divisor, check 4")
323 __success __success_unpriv __retval(-21)
sdiv64_non_zero_reg_4(void)324 __naked void sdiv64_non_zero_reg_4(void)
325 {
326 asm volatile (" \
327 r0 = -42; \
328 r1 = 2; \
329 r0 s/= r1; \
330 exit; \
331 " ::: __clobber_all);
332 }
333
334 SEC("socket")
335 __description("SDIV64, non-zero reg divisor, check 5")
336 __success __success_unpriv __retval(-21)
sdiv64_non_zero_reg_5(void)337 __naked void sdiv64_non_zero_reg_5(void)
338 {
339 asm volatile (" \
340 r0 = 42; \
341 r1 = -2; \
342 r0 s/= r1; \
343 exit; \
344 " ::: __clobber_all);
345 }
346
347 SEC("socket")
348 __description("SDIV64, non-zero reg divisor, check 6")
349 __success __success_unpriv __retval(21)
sdiv64_non_zero_reg_6(void)350 __naked void sdiv64_non_zero_reg_6(void)
351 {
352 asm volatile (" \
353 r0 = -42; \
354 r1 = -2; \
355 r0 s/= r1; \
356 exit; \
357 " ::: __clobber_all);
358 }
359
360 SEC("socket")
361 __description("SMOD32, non-zero imm divisor, check 1")
362 __success __success_unpriv __retval(-1)
smod32_non_zero_imm_1(void)363 __naked void smod32_non_zero_imm_1(void)
364 {
365 asm volatile (" \
366 w0 = -41; \
367 w0 s%%= 2; \
368 exit; \
369 " ::: __clobber_all);
370 }
371
372 SEC("socket")
373 __description("SMOD32, non-zero imm divisor, check 2")
374 __success __success_unpriv __retval(1)
smod32_non_zero_imm_2(void)375 __naked void smod32_non_zero_imm_2(void)
376 {
377 asm volatile (" \
378 w0 = 41; \
379 w0 s%%= -2; \
380 exit; \
381 " ::: __clobber_all);
382 }
383
384 SEC("socket")
385 __description("SMOD32, non-zero imm divisor, check 3")
386 __success __success_unpriv __retval(-1)
smod32_non_zero_imm_3(void)387 __naked void smod32_non_zero_imm_3(void)
388 {
389 asm volatile (" \
390 w0 = -41; \
391 w0 s%%= -2; \
392 exit; \
393 " ::: __clobber_all);
394 }
395
396 SEC("socket")
397 __description("SMOD32, non-zero imm divisor, check 4")
398 __success __success_unpriv __retval(0)
smod32_non_zero_imm_4(void)399 __naked void smod32_non_zero_imm_4(void)
400 {
401 asm volatile (" \
402 w0 = -42; \
403 w0 s%%= 2; \
404 exit; \
405 " ::: __clobber_all);
406 }
407
408 SEC("socket")
409 __description("SMOD32, non-zero imm divisor, check 5")
410 __success __success_unpriv __retval(0)
smod32_non_zero_imm_5(void)411 __naked void smod32_non_zero_imm_5(void)
412 {
413 asm volatile (" \
414 w0 = 42; \
415 w0 s%%= -2; \
416 exit; \
417 " ::: __clobber_all);
418 }
419
420 SEC("socket")
421 __description("SMOD32, non-zero imm divisor, check 6")
422 __success __success_unpriv __retval(0)
smod32_non_zero_imm_6(void)423 __naked void smod32_non_zero_imm_6(void)
424 {
425 asm volatile (" \
426 w0 = -42; \
427 w0 s%%= -2; \
428 exit; \
429 " ::: __clobber_all);
430 }
431
432 SEC("socket")
433 __description("SMOD32, non-zero reg divisor, check 1")
434 __success __success_unpriv __retval(-1)
smod32_non_zero_reg_1(void)435 __naked void smod32_non_zero_reg_1(void)
436 {
437 asm volatile (" \
438 w0 = -41; \
439 w1 = 2; \
440 w0 s%%= w1; \
441 exit; \
442 " ::: __clobber_all);
443 }
444
445 SEC("socket")
446 __description("SMOD32, non-zero reg divisor, check 2")
447 __success __success_unpriv __retval(1)
smod32_non_zero_reg_2(void)448 __naked void smod32_non_zero_reg_2(void)
449 {
450 asm volatile (" \
451 w0 = 41; \
452 w1 = -2; \
453 w0 s%%= w1; \
454 exit; \
455 " ::: __clobber_all);
456 }
457
458 SEC("socket")
459 __description("SMOD32, non-zero reg divisor, check 3")
460 __success __success_unpriv __retval(-1)
smod32_non_zero_reg_3(void)461 __naked void smod32_non_zero_reg_3(void)
462 {
463 asm volatile (" \
464 w0 = -41; \
465 w1 = -2; \
466 w0 s%%= w1; \
467 exit; \
468 " ::: __clobber_all);
469 }
470
471 SEC("socket")
472 __description("SMOD32, non-zero reg divisor, check 4")
473 __success __success_unpriv __retval(0)
smod32_non_zero_reg_4(void)474 __naked void smod32_non_zero_reg_4(void)
475 {
476 asm volatile (" \
477 w0 = -42; \
478 w1 = 2; \
479 w0 s%%= w1; \
480 exit; \
481 " ::: __clobber_all);
482 }
483
484 SEC("socket")
485 __description("SMOD32, non-zero reg divisor, check 5")
486 __success __success_unpriv __retval(0)
smod32_non_zero_reg_5(void)487 __naked void smod32_non_zero_reg_5(void)
488 {
489 asm volatile (" \
490 w0 = 42; \
491 w1 = -2; \
492 w0 s%%= w1; \
493 exit; \
494 " ::: __clobber_all);
495 }
496
497 SEC("socket")
498 __description("SMOD32, non-zero reg divisor, check 6")
499 __success __success_unpriv __retval(0)
smod32_non_zero_reg_6(void)500 __naked void smod32_non_zero_reg_6(void)
501 {
502 asm volatile (" \
503 w0 = -42; \
504 w1 = -2; \
505 w0 s%%= w1; \
506 exit; \
507 " ::: __clobber_all);
508 }
509
510 SEC("socket")
511 __description("SMOD64, non-zero imm divisor, check 1")
512 __success __success_unpriv __retval(-1)
smod64_non_zero_imm_1(void)513 __naked void smod64_non_zero_imm_1(void)
514 {
515 asm volatile (" \
516 r0 = -41; \
517 r0 s%%= 2; \
518 exit; \
519 " ::: __clobber_all);
520 }
521
522 SEC("socket")
523 __description("SMOD64, non-zero imm divisor, check 2")
524 __success __success_unpriv __retval(1)
smod64_non_zero_imm_2(void)525 __naked void smod64_non_zero_imm_2(void)
526 {
527 asm volatile (" \
528 r0 = 41; \
529 r0 s%%= -2; \
530 exit; \
531 " ::: __clobber_all);
532 }
533
534 SEC("socket")
535 __description("SMOD64, non-zero imm divisor, check 3")
536 __success __success_unpriv __retval(-1)
smod64_non_zero_imm_3(void)537 __naked void smod64_non_zero_imm_3(void)
538 {
539 asm volatile (" \
540 r0 = -41; \
541 r0 s%%= -2; \
542 exit; \
543 " ::: __clobber_all);
544 }
545
546 SEC("socket")
547 __description("SMOD64, non-zero imm divisor, check 4")
548 __success __success_unpriv __retval(0)
smod64_non_zero_imm_4(void)549 __naked void smod64_non_zero_imm_4(void)
550 {
551 asm volatile (" \
552 r0 = -42; \
553 r0 s%%= 2; \
554 exit; \
555 " ::: __clobber_all);
556 }
557
558 SEC("socket")
559 __description("SMOD64, non-zero imm divisor, check 5")
560 __success __success_unpriv __retval(-0)
smod64_non_zero_imm_5(void)561 __naked void smod64_non_zero_imm_5(void)
562 {
563 asm volatile (" \
564 r0 = 42; \
565 r0 s%%= -2; \
566 exit; \
567 " ::: __clobber_all);
568 }
569
570 SEC("socket")
571 __description("SMOD64, non-zero imm divisor, check 6")
572 __success __success_unpriv __retval(0)
smod64_non_zero_imm_6(void)573 __naked void smod64_non_zero_imm_6(void)
574 {
575 asm volatile (" \
576 r0 = -42; \
577 r0 s%%= -2; \
578 exit; \
579 " ::: __clobber_all);
580 }
581
582 SEC("socket")
583 __description("SMOD64, non-zero imm divisor, check 7")
584 __success __success_unpriv __retval(0)
smod64_non_zero_imm_7(void)585 __naked void smod64_non_zero_imm_7(void)
586 {
587 asm volatile (" \
588 r0 = 42; \
589 r0 s%%= 2; \
590 exit; \
591 " ::: __clobber_all);
592 }
593
594 SEC("socket")
595 __description("SMOD64, non-zero imm divisor, check 8")
596 __success __success_unpriv __retval(1)
smod64_non_zero_imm_8(void)597 __naked void smod64_non_zero_imm_8(void)
598 {
599 asm volatile (" \
600 r0 = 41; \
601 r0 s%%= 2; \
602 exit; \
603 " ::: __clobber_all);
604 }
605
606 SEC("socket")
607 __description("SMOD64, non-zero reg divisor, check 1")
608 __success __success_unpriv __retval(-1)
smod64_non_zero_reg_1(void)609 __naked void smod64_non_zero_reg_1(void)
610 {
611 asm volatile (" \
612 r0 = -41; \
613 r1 = 2; \
614 r0 s%%= r1; \
615 exit; \
616 " ::: __clobber_all);
617 }
618
619 SEC("socket")
620 __description("SMOD64, non-zero reg divisor, check 2")
621 __success __success_unpriv __retval(1)
smod64_non_zero_reg_2(void)622 __naked void smod64_non_zero_reg_2(void)
623 {
624 asm volatile (" \
625 r0 = 41; \
626 r1 = -2; \
627 r0 s%%= r1; \
628 exit; \
629 " ::: __clobber_all);
630 }
631
632 SEC("socket")
633 __description("SMOD64, non-zero reg divisor, check 3")
634 __success __success_unpriv __retval(-1)
smod64_non_zero_reg_3(void)635 __naked void smod64_non_zero_reg_3(void)
636 {
637 asm volatile (" \
638 r0 = -41; \
639 r1 = -2; \
640 r0 s%%= r1; \
641 exit; \
642 " ::: __clobber_all);
643 }
644
645 SEC("socket")
646 __description("SMOD64, non-zero reg divisor, check 4")
647 __success __success_unpriv __retval(0)
smod64_non_zero_reg_4(void)648 __naked void smod64_non_zero_reg_4(void)
649 {
650 asm volatile (" \
651 r0 = -42; \
652 r1 = 2; \
653 r0 s%%= r1; \
654 exit; \
655 " ::: __clobber_all);
656 }
657
658 SEC("socket")
659 __description("SMOD64, non-zero reg divisor, check 5")
660 __success __success_unpriv __retval(0)
smod64_non_zero_reg_5(void)661 __naked void smod64_non_zero_reg_5(void)
662 {
663 asm volatile (" \
664 r0 = 42; \
665 r1 = -2; \
666 r0 s%%= r1; \
667 exit; \
668 " ::: __clobber_all);
669 }
670
671 SEC("socket")
672 __description("SMOD64, non-zero reg divisor, check 6")
673 __success __success_unpriv __retval(0)
smod64_non_zero_reg_6(void)674 __naked void smod64_non_zero_reg_6(void)
675 {
676 asm volatile (" \
677 r0 = -42; \
678 r1 = -2; \
679 r0 s%%= r1; \
680 exit; \
681 " ::: __clobber_all);
682 }
683
684 SEC("socket")
685 __description("SMOD64, non-zero reg divisor, check 7")
686 __success __success_unpriv __retval(0)
smod64_non_zero_reg_7(void)687 __naked void smod64_non_zero_reg_7(void)
688 {
689 asm volatile (" \
690 r0 = 42; \
691 r1 = 2; \
692 r0 s%%= r1; \
693 exit; \
694 " ::: __clobber_all);
695 }
696
697 SEC("socket")
698 __description("SMOD64, non-zero reg divisor, check 8")
699 __success __success_unpriv __retval(1)
smod64_non_zero_reg_8(void)700 __naked void smod64_non_zero_reg_8(void)
701 {
702 asm volatile (" \
703 r0 = 41; \
704 r1 = 2; \
705 r0 s%%= r1; \
706 exit; \
707 " ::: __clobber_all);
708 }
709
710 SEC("socket")
711 __description("SDIV32, zero divisor")
712 __success __success_unpriv __retval(0)
sdiv32_zero_divisor(void)713 __naked void sdiv32_zero_divisor(void)
714 {
715 asm volatile (" \
716 w0 = 42; \
717 w1 = 0; \
718 w2 = -1; \
719 w2 s/= w1; \
720 w0 = w2; \
721 exit; \
722 " ::: __clobber_all);
723 }
724
725 SEC("socket")
726 __description("SDIV64, zero divisor")
727 __success __success_unpriv __retval(0)
sdiv64_zero_divisor(void)728 __naked void sdiv64_zero_divisor(void)
729 {
730 asm volatile (" \
731 r0 = 42; \
732 r1 = 0; \
733 r2 = -1; \
734 r2 s/= r1; \
735 r0 = r2; \
736 exit; \
737 " ::: __clobber_all);
738 }
739
740 SEC("socket")
741 __description("SMOD32, zero divisor")
742 __success __success_unpriv __retval(-1)
smod32_zero_divisor(void)743 __naked void smod32_zero_divisor(void)
744 {
745 asm volatile (" \
746 w0 = 42; \
747 w1 = 0; \
748 w2 = -1; \
749 w2 s%%= w1; \
750 w0 = w2; \
751 exit; \
752 " ::: __clobber_all);
753 }
754
755 SEC("socket")
756 __description("SMOD64, zero divisor")
757 __success __success_unpriv __retval(-1)
smod64_zero_divisor(void)758 __naked void smod64_zero_divisor(void)
759 {
760 asm volatile (" \
761 r0 = 42; \
762 r1 = 0; \
763 r2 = -1; \
764 r2 s%%= r1; \
765 r0 = r2; \
766 exit; \
767 " ::: __clobber_all);
768 }
769
770 #else
771
772 SEC("socket")
773 __description("cpuv4 is not supported by compiler or jit, use a dummy test")
774 __success
dummy_test(void)775 int dummy_test(void)
776 {
777 return 0;
778 }
779
780 #endif
781
782 char _license[] SEC("license") = "GPL";
783