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