1# mach: bpf 2# output: pass\nexit 0 (0x0)\n 3;;; jmp.s 4;;; Tests for eBPF JMP instructions in simulator 5 6 .include "testutils.inc" 7 8 .text 9 .global main 10 .type main, @function 11main: 12 mov %r1, 5 13 mov %r2, 2 14 mov %r3, 7 15 mov %r4, -1 16 17 ;; ja - jump absolute (unconditional) 18 ja 2f 191: fail 20 212: ;; jeq - jump eq 22 jeq %r1, 4, 1b ; no 23 jeq %r1, %r2, 1b ; no 24 jeq %r1, 5, 2f ; yes 25 fail 262: jeq %r1, %r1, 2f ; yes 27 fail 28 292: ;; jgt - jump (unsigned) greater-than 30 jgt %r1, 6, 1b ; no 31 jgt %r1, -5, 1b ; no - unsigned 32 jgt %r1, %r4, 1b ; no - unsigned 33 jgt %r1, 4, 2f ; yes 34 fail 352: jgt %r1, %r2, 2f ; yes 36 fail 37 382: ;; jge - jump (unsigned) greater-than-or-equal-to 39 jge %r1, 6, 1b ; no 40 jge %r1, 5, 2f ; yes 41 fail 422: jge %r1, %r3, 1b ; no 43 jge %r1, -5, 1b ; no - unsigned 44 jge %r1, %r2, 2f ; yes 45 fail 46 472: ;; jlt - jump (unsigned) less-than 48 jlt %r1, 5, 1b ; no 49 jlt %r1, %r2, 1b ; no 50 jlt %r4, %r1, 1b ; no - unsigned 51 jlt %r1, 6, 2f ; yes 52 fail 532: 54 jlt %r1, %r3, 2f ; yes 55 fail 56 572: ;; jle - jump (unsigned) less-than-or-equal-to 58 jle %r1, 4, 1b ; no 59 jle %r1, %r2, 1b ; no 60 jle %r4, %r1, 1b ; no 61 jle %r1, 5, 2f ; yes 62 fail 632: jle %r1, %r1, 2f ; yes 64 fail 65 662: ;; jset - jump "test" (AND) 67 jset %r1, 2, 1b ; no (5 & 2 = 0) 68 jset %r1, %r2, 1b ; no (same) 69 jset %r1, 4, 2f ; yes (5 & 4 != 0) 70 fail 71 722: ;; jne - jump not-equal-to 73 jne %r1, 5, 1b ; no 74 jne %r1, %r1, 1b ; no 75 jne %r1, 6, 2f ; yes 76 fail 772: jne %r1, %r4, 2f ; yes 78 fail 79 802: ;; jsgt - jump (signed) greater-than 81 jsgt %r1, %r3, 1b ; no 82 jsgt %r1, %r1, 1b ; no 83 jsgt %r1, 5, 1b ; no 84 jsgt %r1, -4, 2f ; yes 85 fail 862: jsgt %r1, %r4, 2f ; yes 87 fail 88 892: ;; jsge - jump (signed) greater-than-or-equal-to 90 jsge %r1, %r3, 1b ; no 91 jsge %r1, %r1, 2f ; yes 92 fail 932: jsge %r1, 7, 1b ; no 94 jsge %r1, -4, 2f ; yes 95 fail 962: jsge %r1, %r4, 2f ; yes 97 fail 98 992: ;; jslt - jump (signed) less-than 100 jslt %r1, 5, 1b ; no 101 jslt %r1, %r2, 1b ; no 102 jslt %r4, %r1, 2f ; yes 103 fail 1042: jslt %r1, 6, 2f ; yes 105 fail 1062: jslt %r1, %r3, 2f ; yes 107 fail 108 1092: ;; jsle - jump (signed) less-than-or-equal-to 110 jsle %r1, 4, 1b ; no 111 jsle %r1, %r2, 1b ; no 112 jsle %r4, %r1, 2f ; yes 113 fail 1142: jsle %r1, 5, 2f ; yes 115 fail 1162: jsle %r1, %r3, 2f ; yes 117 fail 118 1192: 120 pass 121