aboutsummaryrefslogtreecommitdiff
path: root/arch/riscv/net/bpf_jit_comp32.c
diff options
context:
space:
mode:
authorXiao Wang <[email protected]>2024-05-24 15:55:43 +0800
committerDaniel Borkmann <[email protected]>2024-06-03 16:45:23 +0200
commit96a27ee76f0e95b56f94b6902da7a5ebef372612 (patch)
tree24657fa8ed9ffa3b3c22cfd1503a43d34b51bd27 /arch/riscv/net/bpf_jit_comp32.c
parent531876c80004ecff7bfdbd8ba6c6b48835ef5e22 (diff)
riscv, bpf: Introduce shift add helper with Zba optimization
Zba extension is very useful for generating addresses that index into array of basic data types. This patch introduces sh2add and sh3add helpers for RV32 and RV64 respectively, to accelerate addressing for array of unsigned long data. Signed-off-by: Xiao Wang <[email protected]> Signed-off-by: Daniel Borkmann <[email protected]> Acked-by: Björn Töpel <[email protected]> Link: https://lore.kernel.org/bpf/[email protected]
Diffstat (limited to 'arch/riscv/net/bpf_jit_comp32.c')
-rw-r--r--arch/riscv/net/bpf_jit_comp32.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/arch/riscv/net/bpf_jit_comp32.c b/arch/riscv/net/bpf_jit_comp32.c
index f5ba73bb153d..592dd86fbf81 100644
--- a/arch/riscv/net/bpf_jit_comp32.c
+++ b/arch/riscv/net/bpf_jit_comp32.c
@@ -811,8 +811,7 @@ static int emit_bpf_tail_call(int insn, struct rv_jit_context *ctx)
* if (!prog)
* goto out;
*/
- emit(rv_slli(RV_REG_T0, lo(idx_reg), 2), ctx);
- emit(rv_add(RV_REG_T0, RV_REG_T0, lo(arr_reg)), ctx);
+ emit_sh2add(RV_REG_T0, lo(idx_reg), lo(arr_reg), ctx);
off = offsetof(struct bpf_array, ptrs);
if (is_12b_check(off, insn))
return -1;