|
@@ -390,18 +390,6 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx)
|
|
|
case BPF_ALU64 | BPF_DIV | BPF_X:
|
|
|
case BPF_ALU | BPF_MOD | BPF_X:
|
|
|
case BPF_ALU64 | BPF_MOD | BPF_X:
|
|
|
- {
|
|
|
- const u8 r0 = bpf2a64[BPF_REG_0];
|
|
|
-
|
|
|
- /* if (src == 0) return 0 */
|
|
|
- jmp_offset = 3; /* skip ahead to else path */
|
|
|
- check_imm19(jmp_offset);
|
|
|
- emit(A64_CBNZ(is64, src, jmp_offset), ctx);
|
|
|
- emit(A64_MOVZ(1, r0, 0, 0), ctx);
|
|
|
- jmp_offset = epilogue_offset(ctx);
|
|
|
- check_imm26(jmp_offset);
|
|
|
- emit(A64_B(jmp_offset), ctx);
|
|
|
- /* else */
|
|
|
switch (BPF_OP(code)) {
|
|
|
case BPF_DIV:
|
|
|
emit(A64_UDIV(is64, dst, dst, src), ctx);
|
|
@@ -413,7 +401,6 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx)
|
|
|
break;
|
|
|
}
|
|
|
break;
|
|
|
- }
|
|
|
case BPF_ALU | BPF_LSH | BPF_X:
|
|
|
case BPF_ALU64 | BPF_LSH | BPF_X:
|
|
|
emit(A64_LSLV(is64, dst, dst, src), ctx);
|