Lines Matching refs:poke
544 static void emit_bpf_tail_call_direct(struct bpf_jit_poke_descriptor *poke, in emit_bpf_tail_call_direct() argument
565 poke->tailcall_bypass = ip + (prog - start); in emit_bpf_tail_call_direct()
566 poke->adj_off = X86_TAIL_CALL_OFFSET; in emit_bpf_tail_call_direct()
567 poke->tailcall_target = ip + ctx->tail_call_direct_label - X86_PATCH_SIZE; in emit_bpf_tail_call_direct()
568 poke->bypass_addr = (u8 *)poke->tailcall_target + X86_PATCH_SIZE; in emit_bpf_tail_call_direct()
570 emit_jump(&prog, (u8 *)poke->tailcall_target + X86_PATCH_SIZE, in emit_bpf_tail_call_direct()
571 poke->tailcall_bypass); in emit_bpf_tail_call_direct()
589 struct bpf_jit_poke_descriptor *poke; in bpf_tail_call_direct_fixup() local
595 poke = &prog->aux->poke_tab[i]; in bpf_tail_call_direct_fixup()
596 if (poke->aux && poke->aux != prog->aux) in bpf_tail_call_direct_fixup()
599 WARN_ON_ONCE(READ_ONCE(poke->tailcall_target_stable)); in bpf_tail_call_direct_fixup()
601 if (poke->reason != BPF_POKE_REASON_TAIL_CALL) in bpf_tail_call_direct_fixup()
604 array = container_of(poke->tail_call.map, struct bpf_array, map); in bpf_tail_call_direct_fixup()
606 target = array->ptrs[poke->tail_call.key]; in bpf_tail_call_direct_fixup()
608 ret = __bpf_arch_text_poke(poke->tailcall_target, in bpf_tail_call_direct_fixup()
611 poke->adj_off); in bpf_tail_call_direct_fixup()
613 ret = __bpf_arch_text_poke(poke->tailcall_bypass, in bpf_tail_call_direct_fixup()
615 (u8 *)poke->tailcall_target + in bpf_tail_call_direct_fixup()
619 WRITE_ONCE(poke->tailcall_target_stable, true); in bpf_tail_call_direct_fixup()