riscv, bpf: Support 32-bit offset jmp insn
authorPu Lehui <pulehui@huawei.com>
Thu, 24 Aug 2023 09:49:58 +0000 (09:49 +0000)
committerAlexei Starovoitov <ast@kernel.org>
Thu, 24 Aug 2023 16:13:08 +0000 (09:13 -0700)
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>
arch/riscv/net/bpf_jit_comp64.c

index bcf1e75..076619f 100644 (file)
@@ -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;