|
@@ -253,8 +253,9 @@ static int emit_bpf_tail_call(struct jit_ctx *ctx)
|
|
*/
|
|
*/
|
|
off = offsetof(struct bpf_array, ptrs);
|
|
off = offsetof(struct bpf_array, ptrs);
|
|
emit_a64_mov_i64(tmp, off, ctx);
|
|
emit_a64_mov_i64(tmp, off, ctx);
|
|
- emit(A64_LDR64(tmp, r2, tmp), ctx);
|
|
|
|
- emit(A64_LDR64(prg, tmp, r3), ctx);
|
|
|
|
|
|
+ emit(A64_ADD(1, tmp, r2, tmp), ctx);
|
|
|
|
+ emit(A64_LSL(1, prg, r3, 3), ctx);
|
|
|
|
+ emit(A64_LDR64(prg, tmp, prg), ctx);
|
|
emit(A64_CBZ(1, prg, jmp_offset), ctx);
|
|
emit(A64_CBZ(1, prg, jmp_offset), ctx);
|
|
|
|
|
|
/* goto *(prog->bpf_func + prologue_size); */
|
|
/* goto *(prog->bpf_func + prologue_size); */
|