mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
mips: bpf: implement jitting of BPF_ALU | BPF_ARSH | BPF_X
Jitting of BPF_K is supported already, but not BPF_X. This patch complete the support for the latter on both MIPS and microMIPS. Cc: Paul Burton <paul.burton@mips.com> Cc: linux-mips@vger.kernel.org Acked-by: Paul Burton <paul.burton@mips.com> Signed-off-by: Jiong Wang <jiong.wang@netronome.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
17f6c83fb5
commit
ee94b90c8a
6 changed files with 13 additions and 4 deletions
|
@ -854,6 +854,7 @@ static int build_one_insn(const struct bpf_insn *insn, struct jit_ctx *ctx,
|
|||
case BPF_ALU | BPF_MOD | BPF_X: /* ALU_REG */
|
||||
case BPF_ALU | BPF_LSH | BPF_X: /* ALU_REG */
|
||||
case BPF_ALU | BPF_RSH | BPF_X: /* ALU_REG */
|
||||
case BPF_ALU | BPF_ARSH | BPF_X: /* ALU_REG */
|
||||
src = ebpf_to_mips_reg(ctx, insn, src_reg_no_fp);
|
||||
dst = ebpf_to_mips_reg(ctx, insn, dst_reg);
|
||||
if (src < 0 || dst < 0)
|
||||
|
@ -913,6 +914,9 @@ static int build_one_insn(const struct bpf_insn *insn, struct jit_ctx *ctx,
|
|||
case BPF_RSH:
|
||||
emit_instr(ctx, srlv, dst, dst, src);
|
||||
break;
|
||||
case BPF_ARSH:
|
||||
emit_instr(ctx, srav, dst, dst, src);
|
||||
break;
|
||||
default:
|
||||
pr_err("ALU_REG NOT HANDLED\n");
|
||||
return -EINVAL;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue