aboutsummaryrefslogtreecommitdiffstats
path: root/samples
diff options
context:
space:
mode:
authorJiong Wang <jiong.wang@netronome.com>2019-01-26 12:26:13 -0500
committerAlexei Starovoitov <ast@kernel.org>2019-01-26 16:33:02 -0500
commit6ea848b5ced53cbfd5677ff176c2aca10fd61bf4 (patch)
treeb362dbebfb60ce4b7a9ba03bc10ea7f8f7ed26fb /samples
parent461448398ac104b014530680dbac09e577cd2695 (diff)
selftests: bpf: functional and min/max reasoning unit tests for JMP32
This patch adds unit tests for new JMP32 instructions. This patch also added the new BPF_JMP32_REG and BPF_JMP32_IMM macros to samples/bpf/bpf_insn.h so that JMP32 insn builders are available to tests under 'samples' directory. Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Jiong Wang <jiong.wang@netronome.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'samples')
-rw-r--r--samples/bpf/bpf_insn.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/samples/bpf/bpf_insn.h b/samples/bpf/bpf_insn.h
index 20dc5cefec84..544237980582 100644
--- a/samples/bpf/bpf_insn.h
+++ b/samples/bpf/bpf_insn.h
@@ -164,6 +164,16 @@ struct bpf_insn;
164 .off = OFF, \ 164 .off = OFF, \
165 .imm = 0 }) 165 .imm = 0 })
166 166
167/* Like BPF_JMP_REG, but with 32-bit wide operands for comparison. */
168
169#define BPF_JMP32_REG(OP, DST, SRC, OFF) \
170 ((struct bpf_insn) { \
171 .code = BPF_JMP32 | BPF_OP(OP) | BPF_X, \
172 .dst_reg = DST, \
173 .src_reg = SRC, \
174 .off = OFF, \
175 .imm = 0 })
176
167/* Conditional jumps against immediates, if (dst_reg 'op' imm32) goto pc + off16 */ 177/* Conditional jumps against immediates, if (dst_reg 'op' imm32) goto pc + off16 */
168 178
169#define BPF_JMP_IMM(OP, DST, IMM, OFF) \ 179#define BPF_JMP_IMM(OP, DST, IMM, OFF) \
@@ -174,6 +184,16 @@ struct bpf_insn;
174 .off = OFF, \ 184 .off = OFF, \
175 .imm = IMM }) 185 .imm = IMM })
176 186
187/* Like BPF_JMP_IMM, but with 32-bit wide operands for comparison. */
188
189#define BPF_JMP32_IMM(OP, DST, IMM, OFF) \
190 ((struct bpf_insn) { \
191 .code = BPF_JMP32 | BPF_OP(OP) | BPF_K, \
192 .dst_reg = DST, \
193 .src_reg = 0, \
194 .off = OFF, \
195 .imm = IMM })
196
177/* Raw code statement block */ 197/* Raw code statement block */
178 198
179#define BPF_RAW_INSN(CODE, DST, SRC, OFF, IMM) \ 199#define BPF_RAW_INSN(CODE, DST, SRC, OFF, IMM) \