~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/testing/selftests/bpf/progs/verifier_sdiv.c

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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)
 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)
 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)
 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)
 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)
 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)
 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)
 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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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
778 int dummy_test(void)
779 {
780         return 0;
781 }
782 
783 #endif
784 
785 char _license[] SEC("license") = "GPL";
786 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php