Le 05/08/2025 à 08:27, Saket Kumar Bhaskar a écrit :
bpf_jit_emit_probe_mem_store() is introduced to emit instructions for
storing memory values depending on the size (byte, halfword,
word, doubleword).

Build break with this patch

  CC      arch/powerpc/net/bpf_jit_comp64.o
arch/powerpc/net/bpf_jit_comp64.c:395:12: error: 'bpf_jit_emit_probe_mem_store' defined but not used [-Werror=unused-function] static int bpf_jit_emit_probe_mem_store(struct codegen_context *ctx, u32 src_reg, s16 off,
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[4]: *** [scripts/Makefile.build:287: arch/powerpc/net/bpf_jit_comp64.o] Error 1



Signed-off-by: Saket Kumar Bhaskar <sk...@linux.ibm.com>
---
  arch/powerpc/net/bpf_jit_comp64.c | 30 ++++++++++++++++++++++++++++++
  1 file changed, 30 insertions(+)

diff --git a/arch/powerpc/net/bpf_jit_comp64.c 
b/arch/powerpc/net/bpf_jit_comp64.c
index 025524378443..489de21fe3d6 100644
--- a/arch/powerpc/net/bpf_jit_comp64.c
+++ b/arch/powerpc/net/bpf_jit_comp64.c
@@ -409,6 +409,36 @@ asm (
  "                blr                             ;"
  );
+static int bpf_jit_emit_probe_mem_store(struct codegen_context *ctx, u32 src_reg, s16 off,
+                                       u32 code, u32 *image)
+{
+       u32 tmp1_reg = bpf_to_ppc(TMP_REG_1);
+       u32 tmp2_reg = bpf_to_ppc(TMP_REG_2);
+
+       switch (BPF_SIZE(code)) {
+       case BPF_B:
+               EMIT(PPC_RAW_STB(src_reg, tmp1_reg, off));
+               break;
+       case BPF_H:
+               EMIT(PPC_RAW_STH(src_reg, tmp1_reg, off));
+               break;
+       case BPF_W:
+               EMIT(PPC_RAW_STW(src_reg, tmp1_reg, off));
+               break;
+       case BPF_DW:
+               if (off % 4) {
+                       EMIT(PPC_RAW_LI(tmp2_reg, off));
+                       EMIT(PPC_RAW_STDX(src_reg, tmp1_reg, tmp2_reg));
+               } else {
+                       EMIT(PPC_RAW_STD(src_reg, tmp1_reg, off));
+               }
+               break;
+       default:
+               return -EINVAL;
+       }
+       return 0;
+}
+
  static int emit_atomic_ld_st(const struct bpf_insn insn, struct 
codegen_context *ctx, u32 *image)
  {
        u32 code = insn.code;


Reply via email to