diff options
author | Pu Lehui <pulehui@huawei.com> | 2023-08-24 09:49:58 +0000 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2023-08-24 09:13:08 -0700 |
commit | d9839f16c1502556993552746452c862cb1c41af (patch) | |
tree | 6ec0a21e7106963017335438a4ad9ead29bbdefc /arch/riscv/net | |
parent | 694896ad3ca79b3291efaf29702a94d2568b5279 (diff) |
riscv, bpf: Support 32-bit offset jmp insn
Add support 32-bit offset jmp instruction for RV64.
Signed-off-by: Pu Lehui <pulehui@huawei.com>
Acked-by: Björn Töpel <bjorn@kernel.org>
Link: https://lore.kernel.org/r/20230824095001.3408573-5-pulehui@huaweicloud.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'arch/riscv/net')
-rw-r--r-- | arch/riscv/net/bpf_jit_comp64.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/riscv/net/bpf_jit_comp64.c b/arch/riscv/net/bpf_jit_comp64.c index bcf1e7509cb9..076619f4aa82 100644 --- a/arch/riscv/net/bpf_jit_comp64.c +++ b/arch/riscv/net/bpf_jit_comp64.c @@ -1327,7 +1327,11 @@ out_be: /* JUMP off */ case BPF_JMP | BPF_JA: - rvoff = rv_offset(i, off, ctx); + case BPF_JMP32 | BPF_JA: + if (BPF_CLASS(code) == BPF_JMP) + rvoff = rv_offset(i, off, ctx); + else + rvoff = rv_offset(i, imm, ctx); ret = emit_jump_and_link(RV_REG_ZERO, rvoff, true, ctx); if (ret) return ret; |