lkml.org 
[lkml]   [2020]   [Dec]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC PATCH v1 2/7] powerpc/bpf: Change register numbering for bpf_set/is_seen_register()
    Date
    Instead of using BPF register number as input in functions
    bpf_set_seen_register() and bpf_is_seen_register(), use
    CPU register number directly.

    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    ---
    arch/powerpc/net/bpf_jit_comp64.c | 16 ++++++++--------
    1 file changed, 8 insertions(+), 8 deletions(-)

    diff --git a/arch/powerpc/net/bpf_jit_comp64.c b/arch/powerpc/net/bpf_jit_comp64.c
    index 022103c6a201..26a836a904f5 100644
    --- a/arch/powerpc/net/bpf_jit_comp64.c
    +++ b/arch/powerpc/net/bpf_jit_comp64.c
    @@ -31,12 +31,12 @@ static inline void bpf_flush_icache(void *start, void *end)

    static inline bool bpf_is_seen_register(struct codegen_context *ctx, int i)
    {
    - return (ctx->seen & (1 << (31 - b2p[i])));
    + return ctx->seen & (1 << (31 - i));
    }

    static inline void bpf_set_seen_register(struct codegen_context *ctx, int i)
    {
    - ctx->seen |= (1 << (31 - b2p[i]));
    + ctx->seen |= 1 << (31 - i);
    }

    static inline bool bpf_has_stack_frame(struct codegen_context *ctx)
    @@ -47,7 +47,7 @@ static inline bool bpf_has_stack_frame(struct codegen_context *ctx)
    * - the bpf program uses its stack area
    * The latter condition is deduced from the usage of BPF_REG_FP
    */
    - return ctx->seen & SEEN_FUNC || bpf_is_seen_register(ctx, BPF_REG_FP);
    + return ctx->seen & SEEN_FUNC || bpf_is_seen_register(ctx, b2p[BPF_REG_FP]);
    }

    /*
    @@ -124,11 +124,11 @@ static void bpf_jit_build_prologue(u32 *image, struct codegen_context *ctx)
    * in the protected zone below the previous stack frame
    */
    for (i = BPF_REG_6; i <= BPF_REG_10; i++)
    - if (bpf_is_seen_register(ctx, i))
    + if (bpf_is_seen_register(ctx, b2p[i]))
    PPC_BPF_STL(b2p[i], 1, bpf_jit_stack_offsetof(ctx, b2p[i]));

    /* Setup frame pointer to point to the bpf stack area */
    - if (bpf_is_seen_register(ctx, BPF_REG_FP))
    + if (bpf_is_seen_register(ctx, b2p[BPF_REG_FP]))
    EMIT(PPC_RAW_ADDI(b2p[BPF_REG_FP], 1,
    STACK_FRAME_MIN_SIZE + ctx->stack_size));
    }
    @@ -139,7 +139,7 @@ static void bpf_jit_emit_common_epilogue(u32 *image, struct codegen_context *ctx

    /* Restore NVRs */
    for (i = BPF_REG_6; i <= BPF_REG_10; i++)
    - if (bpf_is_seen_register(ctx, i))
    + if (bpf_is_seen_register(ctx, b2p[i]))
    PPC_BPF_LL(b2p[i], 1, bpf_jit_stack_offsetof(ctx, b2p[i]));

    /* Tear down our stack frame */
    @@ -330,9 +330,9 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
    * any issues.
    */
    if (dst_reg >= BPF_PPC_NVR_MIN && dst_reg < 32)
    - bpf_set_seen_register(ctx, insn[i].dst_reg);
    + bpf_set_seen_register(ctx, dst_reg);
    if (src_reg >= BPF_PPC_NVR_MIN && src_reg < 32)
    - bpf_set_seen_register(ctx, insn[i].src_reg);
    + bpf_set_seen_register(ctx, src_reg);

    switch (code) {
    /*
    --
    2.25.0
    \
     
     \ /
      Last update: 2020-12-16 11:09    [W:2.805 / U:0.092 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site