Lines Matching refs:tjit
2105 static int invoke_bpf_prog(struct bpf_tramp_jit *tjit,
2109 struct bpf_jit *jit = &tjit->common;
2110 int cookie_off = tjit->run_ctx_off +
2134 EMIT4_DISP(0x41000000, REG_3, REG_15, tjit->run_ctx_off);
2150 EMIT4_DISP(0x41000000, REG_2, REG_15, tjit->bpf_args_off);
2161 tjit->retval_off);
2179 EMIT4_DISP(0x41000000, REG_4, REG_15, tjit->run_ctx_off);
2186 static int alloc_stack(struct bpf_tramp_jit *tjit, size_t size)
2188 int stack_offset = tjit->stack_size;
2190 tjit->stack_size += size;
2205 struct bpf_tramp_jit *tjit,
2215 struct bpf_jit *jit = &tjit->common;
2256 tjit->stack_size = STACK_FRAME_OVERHEAD;
2257 tjit->backchain_off = tjit->stack_size - sizeof(u64);
2258 tjit->stack_args_off = alloc_stack(tjit, nr_stack_args * sizeof(u64));
2259 tjit->reg_args_off = alloc_stack(tjit, nr_reg_args * sizeof(u64));
2260 tjit->ip_off = alloc_stack(tjit, sizeof(u64));
2261 tjit->arg_cnt_off = alloc_stack(tjit, sizeof(u64));
2262 tjit->bpf_args_off = alloc_stack(tjit, nr_bpf_args * sizeof(u64));
2263 tjit->retval_off = alloc_stack(tjit, sizeof(u64));
2264 tjit->r7_r8_off = alloc_stack(tjit, 2 * sizeof(u64));
2265 tjit->run_ctx_off = alloc_stack(tjit,
2267 tjit->tccnt_off = alloc_stack(tjit, sizeof(u64));
2268 tjit->r14_off = alloc_stack(tjit, sizeof(u64) * 2);
2274 tjit->stack_size -= STACK_FRAME_OVERHEAD - sizeof(u64);
2275 tjit->orig_stack_args_off = tjit->stack_size + STACK_FRAME_OVERHEAD;
2280 EMIT4_IMM(0xa70b0000, REG_15, -tjit->stack_size);
2283 tjit->backchain_off);
2285 _EMIT6(0xd203f000 | tjit->tccnt_off,
2286 0xf000 | (tjit->stack_size + STK_OFF_TCCNT));
2291 tjit->reg_args_off);
2296 arg = tjit->orig_stack_args_off +
2298 bpf_arg_off = tjit->bpf_args_off + j * sizeof(u64);
2326 tjit->r7_r8_off);
2328 EMIT6_DISP_LH(0xe3000000, 0x0024, REG_14, REG_0, REG_15, tjit->r14_off);
2355 tjit->ip_off);
2361 tjit->arg_cnt_off);
2377 if (invoke_bpf_prog(tjit, m, fentry->links[i],
2387 _EMIT6(0xd707f000 | tjit->retval_off,
2388 0xf000 | tjit->retval_off);
2391 if (invoke_bpf_prog(tjit, m, fmod_ret->links[i], true))
2401 tjit->retval_off);
2403 EMIT6_PCREL_RILC(0xc0040000, 7, tjit->do_fexit);
2416 tjit->reg_args_off);
2421 tjit->stack_args_off,
2422 0xf000 | tjit->orig_stack_args_off);
2424 _EMIT6(0xd203f000 | STK_OFF_TCCNT, 0xf000 | tjit->tccnt_off);
2431 tjit->retval_off);
2444 tjit->do_fexit = jit->prg;
2446 if (invoke_bpf_prog(tjit, m, fexit->links[i], false))
2468 tjit->reg_args_off);
2474 tjit->r7_r8_off);
2476 EMIT6_DISP_LH(0xe3000000, 0x0004, REG_14, REG_0, REG_15, tjit->r14_off);
2480 tjit->retval_off);
2482 _EMIT6(0xd203f000 | (tjit->stack_size + STK_OFF_TCCNT),
2483 0xf000 | tjit->tccnt_off);
2485 EMIT4_IMM(0xa70b0000, REG_15, tjit->stack_size);
2506 struct bpf_tramp_jit tjit;
2513 memset(&tjit, 0, sizeof(tjit));
2516 tjit.common.prg = 0;
2517 tjit.common.prg_buf = image;
2519 ret = __arch_prepare_bpf_trampoline(im, &tjit, m, flags,
2523 if (tjit.common.prg > (char *)image_end - (char *)image)
2531 return tjit.common.prg;