diff options
Diffstat (limited to 'arch/arm64/net/bpf_jit_comp.c')
-rw-r--r-- | arch/arm64/net/bpf_jit_comp.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/arm64/net/bpf_jit_comp.c b/arch/arm64/net/bpf_jit_comp.c index c6e53580aefe..71f930501ade 100644 --- a/arch/arm64/net/bpf_jit_comp.c +++ b/arch/arm64/net/bpf_jit_comp.c | |||
@@ -253,8 +253,9 @@ static int emit_bpf_tail_call(struct jit_ctx *ctx) | |||
253 | */ | 253 | */ |
254 | off = offsetof(struct bpf_array, ptrs); | 254 | off = offsetof(struct bpf_array, ptrs); |
255 | emit_a64_mov_i64(tmp, off, ctx); | 255 | emit_a64_mov_i64(tmp, off, ctx); |
256 | emit(A64_LDR64(tmp, r2, tmp), ctx); | 256 | emit(A64_ADD(1, tmp, r2, tmp), ctx); |
257 | emit(A64_LDR64(prg, tmp, r3), ctx); | 257 | emit(A64_LSL(1, prg, r3, 3), ctx); |
258 | emit(A64_LDR64(prg, tmp, prg), ctx); | ||
258 | emit(A64_CBZ(1, prg, jmp_offset), ctx); | 259 | emit(A64_CBZ(1, prg, jmp_offset), ctx); |
259 | 260 | ||
260 | /* goto *(prog->bpf_func + prologue_size); */ | 261 | /* goto *(prog->bpf_func + prologue_size); */ |