jit 113 arch/s390/net/bpf_jit_comp.c static inline void reg_set_seen(struct bpf_jit *jit, u32 b1) jit 117 arch/s390/net/bpf_jit_comp.c if (!jit->seen_reg[r1] && r1 >= 6 && r1 <= 15) jit 118 arch/s390/net/bpf_jit_comp.c jit->seen_reg[r1] = 1; jit 123 arch/s390/net/bpf_jit_comp.c reg_set_seen(jit, b1); \ jit 126 arch/s390/net/bpf_jit_comp.c #define REG_SEEN(b1) jit->seen_reg[reg2hex[(b1)]] jit 134 arch/s390/net/bpf_jit_comp.c if (jit->prg_buf) \ jit 135 arch/s390/net/bpf_jit_comp.c *(u16 *) (jit->prg_buf + jit->prg) = op; \ jit 136 arch/s390/net/bpf_jit_comp.c jit->prg += 2; \ jit 148 arch/s390/net/bpf_jit_comp.c if (jit->prg_buf) \ jit 149 arch/s390/net/bpf_jit_comp.c *(u32 *) (jit->prg_buf + jit->prg) = op; \ jit 150 arch/s390/net/bpf_jit_comp.c jit->prg += 4; \ jit 197 arch/s390/net/bpf_jit_comp.c if (jit->prg_buf) { \ jit 198 arch/s390/net/bpf_jit_comp.c *(u32 *) (jit->prg_buf + jit->prg) = op1; \ jit 199 arch/s390/net/bpf_jit_comp.c *(u16 *) (jit->prg_buf + jit->prg + 4) = op2; \ jit 201 arch/s390/net/bpf_jit_comp.c jit->prg += 6; \ jit 229 arch/s390/net/bpf_jit_comp.c int rel = (jit->labels[label] - jit->prg) >> 1; \ jit 238 arch/s390/net/bpf_jit_comp.c int rel = (jit->labels[label] - jit->prg) >> 1; \ jit 256 arch/s390/net/bpf_jit_comp.c int rel = (target - jit->prg) / 2; \ jit 263 arch/s390/net/bpf_jit_comp.c int rel = (target - jit->prg) / 2; \ jit 282 arch/s390/net/bpf_jit_comp.c ret = jit->lit - jit->base_ip; \ jit 283 arch/s390/net/bpf_jit_comp.c jit->seen |= SEEN_LITERAL; \ jit 284 arch/s390/net/bpf_jit_comp.c if (jit->prg_buf) \ jit 285 arch/s390/net/bpf_jit_comp.c *(u32 *) (jit->prg_buf + jit->lit) = (u32) val; \ jit 286 arch/s390/net/bpf_jit_comp.c jit->lit += 4; \ jit 293 arch/s390/net/bpf_jit_comp.c ret = jit->lit - jit->base_ip; \ jit 294 arch/s390/net/bpf_jit_comp.c jit->seen |= SEEN_LITERAL; \ jit 295 arch/s390/net/bpf_jit_comp.c if (jit->prg_buf) \ jit 296 arch/s390/net/bpf_jit_comp.c *(u64 *) (jit->prg_buf + jit->lit) = (u64) val; \ jit 297 arch/s390/net/bpf_jit_comp.c jit->lit += 8; \ jit 321 arch/s390/net/bpf_jit_comp.c static void save_regs(struct bpf_jit *jit, u32 rs, u32 re) jit 336 arch/s390/net/bpf_jit_comp.c static void restore_regs(struct bpf_jit *jit, u32 rs, u32 re, u32 stack_depth) jit 340 arch/s390/net/bpf_jit_comp.c if (jit->seen & SEEN_STACK) jit 354 arch/s390/net/bpf_jit_comp.c static int get_start(struct bpf_jit *jit, int start) jit 359 arch/s390/net/bpf_jit_comp.c if (jit->seen_reg[i]) jit 368 arch/s390/net/bpf_jit_comp.c static int get_end(struct bpf_jit *jit, int start) jit 373 arch/s390/net/bpf_jit_comp.c if (!jit->seen_reg[i] && !jit->seen_reg[i + 1]) jit 376 arch/s390/net/bpf_jit_comp.c return jit->seen_reg[15] ? 15 : 14; jit 385 arch/s390/net/bpf_jit_comp.c static void save_restore_regs(struct bpf_jit *jit, int op, u32 stack_depth) jit 391 arch/s390/net/bpf_jit_comp.c rs = get_start(jit, re); jit 394 arch/s390/net/bpf_jit_comp.c re = get_end(jit, rs + 1); jit 396 arch/s390/net/bpf_jit_comp.c save_regs(jit, rs, re); jit 398 arch/s390/net/bpf_jit_comp.c restore_regs(jit, rs, re, stack_depth); jit 409 arch/s390/net/bpf_jit_comp.c static void bpf_jit_prologue(struct bpf_jit *jit, u32 stack_depth) jit 411 arch/s390/net/bpf_jit_comp.c if (jit->seen & SEEN_TAIL_CALL) { jit 420 arch/s390/net/bpf_jit_comp.c jit->tail_call_start = jit->prg; jit 422 arch/s390/net/bpf_jit_comp.c save_restore_regs(jit, REGS_SAVE, stack_depth); jit 424 arch/s390/net/bpf_jit_comp.c if (jit->seen & SEEN_LITERAL) { jit 427 arch/s390/net/bpf_jit_comp.c jit->base_ip = jit->prg; jit 430 arch/s390/net/bpf_jit_comp.c if (jit->seen & SEEN_STACK) { jit 431 arch/s390/net/bpf_jit_comp.c if (jit->seen & SEEN_FUNC) jit 438 arch/s390/net/bpf_jit_comp.c if (jit->seen & SEEN_FUNC) jit 448 arch/s390/net/bpf_jit_comp.c static void bpf_jit_epilogue(struct bpf_jit *jit, u32 stack_depth) jit 451 arch/s390/net/bpf_jit_comp.c if (jit->seen & SEEN_RET0) { jit 452 arch/s390/net/bpf_jit_comp.c jit->ret0_ip = jit->prg; jit 456 arch/s390/net/bpf_jit_comp.c jit->exit_ip = jit->prg; jit 460 arch/s390/net/bpf_jit_comp.c save_restore_regs(jit, REGS_RESTORE, stack_depth); jit 462 arch/s390/net/bpf_jit_comp.c jit->r14_thunk_ip = jit->prg; jit 466 arch/s390/net/bpf_jit_comp.c EMIT6_PCREL_RIL(0xc6000000, jit->prg + 10); jit 469 arch/s390/net/bpf_jit_comp.c EMIT6_PCREL_RILB(0xc0000000, REG_1, jit->prg + 14); jit 480 arch/s390/net/bpf_jit_comp.c (jit->seen & SEEN_FUNC)) { jit 481 arch/s390/net/bpf_jit_comp.c jit->r1_thunk_ip = jit->prg; jit 485 arch/s390/net/bpf_jit_comp.c EMIT6_PCREL_RIL(0xc6000000, jit->prg + 10); jit 506 arch/s390/net/bpf_jit_comp.c static noinline int bpf_jit_insn(struct bpf_jit *jit, struct bpf_prog *fp, jit 513 arch/s390/net/bpf_jit_comp.c u32 *addrs = jit->addrs; jit 519 arch/s390/net/bpf_jit_comp.c jit->seen |= SEEN_REG_AX; jit 922 arch/s390/net/bpf_jit_comp.c jit->seen |= SEEN_MEM; jit 927 arch/s390/net/bpf_jit_comp.c jit->seen |= SEEN_MEM; jit 932 arch/s390/net/bpf_jit_comp.c jit->seen |= SEEN_MEM; jit 937 arch/s390/net/bpf_jit_comp.c jit->seen |= SEEN_MEM; jit 944 arch/s390/net/bpf_jit_comp.c jit->seen |= SEEN_MEM; jit 951 arch/s390/net/bpf_jit_comp.c jit->seen |= SEEN_MEM; jit 958 arch/s390/net/bpf_jit_comp.c jit->seen |= SEEN_MEM; jit 965 arch/s390/net/bpf_jit_comp.c jit->seen |= SEEN_MEM; jit 974 arch/s390/net/bpf_jit_comp.c jit->seen |= SEEN_MEM; jit 980 arch/s390/net/bpf_jit_comp.c jit->seen |= SEEN_MEM; jit 988 arch/s390/net/bpf_jit_comp.c jit->seen |= SEEN_MEM; jit 995 arch/s390/net/bpf_jit_comp.c jit->seen |= SEEN_MEM; jit 1001 arch/s390/net/bpf_jit_comp.c jit->seen |= SEEN_MEM; jit 1008 arch/s390/net/bpf_jit_comp.c jit->seen |= SEEN_MEM; jit 1026 arch/s390/net/bpf_jit_comp.c jit->seen |= SEEN_FUNC; jit 1032 arch/s390/net/bpf_jit_comp.c EMIT6_PCREL_RILB(0xc0050000, REG_14, jit->r1_thunk_ip); jit 1048 arch/s390/net/bpf_jit_comp.c jit->seen |= SEEN_TAIL_CALL; jit 1067 arch/s390/net/bpf_jit_comp.c if (jit->seen & SEEN_STACK) jit 1098 arch/s390/net/bpf_jit_comp.c save_restore_regs(jit, REGS_RESTORE, fp->aux->stack_depth); jit 1108 arch/s390/net/bpf_jit_comp.c _EMIT4(0x47f01000 + jit->tail_call_start); jit 1110 arch/s390/net/bpf_jit_comp.c jit->labels[0] = jit->prg; jit 1114 arch/s390/net/bpf_jit_comp.c if (last && !(jit->seen & SEEN_RET0)) jit 1117 arch/s390/net/bpf_jit_comp.c EMIT4_PCREL(0xa7f40000, jit->exit_ip - jit->prg); jit 1292 arch/s390/net/bpf_jit_comp.c static int bpf_jit_prog(struct bpf_jit *jit, struct bpf_prog *fp, jit 1297 arch/s390/net/bpf_jit_comp.c jit->lit = jit->lit_start; jit 1298 arch/s390/net/bpf_jit_comp.c jit->prg = 0; jit 1300 arch/s390/net/bpf_jit_comp.c bpf_jit_prologue(jit, fp->aux->stack_depth); jit 1302 arch/s390/net/bpf_jit_comp.c insn_count = bpf_jit_insn(jit, fp, i, extra_pass); jit 1306 arch/s390/net/bpf_jit_comp.c jit->addrs[i + insn_count] = jit->prg; jit 1308 arch/s390/net/bpf_jit_comp.c bpf_jit_epilogue(jit, fp->aux->stack_depth); jit 1310 arch/s390/net/bpf_jit_comp.c jit->lit_start = jit->prg; jit 1311 arch/s390/net/bpf_jit_comp.c jit->size = jit->lit; jit 1312 arch/s390/net/bpf_jit_comp.c jit->size_prg = jit->prg; jit 1337 arch/s390/net/bpf_jit_comp.c struct bpf_jit jit; jit 1365 arch/s390/net/bpf_jit_comp.c jit = jit_data->ctx; jit 1372 arch/s390/net/bpf_jit_comp.c memset(&jit, 0, sizeof(jit)); jit 1373 arch/s390/net/bpf_jit_comp.c jit.addrs = kvcalloc(fp->len + 1, sizeof(*jit.addrs), GFP_KERNEL); jit 1374 arch/s390/net/bpf_jit_comp.c if (jit.addrs == NULL) { jit 1384 arch/s390/net/bpf_jit_comp.c if (bpf_jit_prog(&jit, fp, extra_pass)) { jit 1392 arch/s390/net/bpf_jit_comp.c if (jit.size >= BPF_SIZE_MAX) { jit 1397 arch/s390/net/bpf_jit_comp.c header = bpf_jit_binary_alloc(jit.size, &jit.prg_buf, 2, jit_fill_hole); jit 1403 arch/s390/net/bpf_jit_comp.c if (bpf_jit_prog(&jit, fp, extra_pass)) { jit 1409 arch/s390/net/bpf_jit_comp.c bpf_jit_dump(fp->len, jit.size, pass, jit.prg_buf); jit 1410 arch/s390/net/bpf_jit_comp.c print_fn_code(jit.prg_buf, jit.size_prg); jit 1416 arch/s390/net/bpf_jit_comp.c jit_data->ctx = jit; jit 1419 arch/s390/net/bpf_jit_comp.c fp->bpf_func = (void *) jit.prg_buf; jit 1421 arch/s390/net/bpf_jit_comp.c fp->jited_len = jit.size; jit 1424 arch/s390/net/bpf_jit_comp.c bpf_prog_fill_jited_linfo(fp, jit.addrs + 1); jit 1426 arch/s390/net/bpf_jit_comp.c kvfree(jit.addrs);