Symbol: nfp_prog
drivers/net/ethernet/netronome/nfp/bpf/jit.c
100
emit_cmd_any(struct nfp_prog *nfp_prog, enum cmd_tgt_map op, u8 mode, u8 xfer,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1001
data_st_host_order(struct nfp_prog *nfp_prog, u8 dst_gpr, swreg offset,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1004
wrp_immed(nfp_prog, reg_xfer(0), imm);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1006
wrp_immed(nfp_prog, reg_xfer(1), imm >> 32);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1008
emit_cmd(nfp_prog, CMD_TGT_WRITE8_SWAP, CMD_MODE_32b, 0,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1015
(*lmem_step)(struct nfp_prog *nfp_prog, u8 gpr, u8 gpr_byte, s32 off,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1020
wrp_lmem_load(struct nfp_prog *nfp_prog, u8 dst, u8 dst_byte, s32 off,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1038
wrp_mov(nfp_prog, reg_both(dst),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1070
reg = imm_a(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1077
wrp_mov(nfp_prog, reg, reg_lm(0, idx));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
108
nfp_prog->error = err;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1080
emit_ld_field_any(nfp_prog, reg_both(dst), mask, reg, sc, shf, new_gpr);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1083
wrp_mov(nfp_prog, reg_none(), reg_lm_inc(3));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1089
wrp_lmem_store(struct nfp_prog *nfp_prog, u8 src, u8 src_byte, s32 off,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1107
wrp_mov(nfp_prog,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
113
nfp_prog->error = -EFAULT;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1140
reg = imm_a(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1145
wrp_mov(nfp_prog, reg, reg_lm(0, idx));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1148
emit_ld_field(nfp_prog, reg, mask, reg_b(src), sc, shf);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1152
wrp_mov(nfp_prog, reg_lm(0, idx), reg);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1154
wrp_mov(nfp_prog, reg_none(), reg_lm_inc(3));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1161
mem_op_stack(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1165
s32 off = nfp_prog->stack_frame_depth + meta->insn.off + ptr_off;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
118
nfp_prog->error = -EFAULT;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1180
stack_off_reg = ur_load_imm_any(nfp_prog, meta->insn.off,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1181
stack_imm(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1183
emit_alu(nfp_prog, imm_b(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1197
stack_off_reg = ur_load_imm_any(nfp_prog, round_down(off, 32),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1198
stack_imm(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1199
emit_alu(nfp_prog, imm_b(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1200
stack_reg(nfp_prog), ALU_OP_ADD, stack_off_reg);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1204
stack_off_reg = ur_load_imm_any(nfp_prog, round_down(off, 4),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1205
stack_imm(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1207
emit_alu(nfp_prog, imm_b(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1208
stack_reg(nfp_prog), ALU_OP_ADD, stack_off_reg);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1218
emit_csr_wr(nfp_prog, imm_b(nfp_prog), NFP_CSR_ACT_LM_ADDR3);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
122
__emit_cmd(nfp_prog, op, mode, xfer, reg.areg, reg.breg, size, ctx,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1224
wrp_nops(nfp_prog, nop_cnt);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1228
wrp_zext(nfp_prog, meta, gpr);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1243
ret = step(nfp_prog, gpr, gpr_byte, off, slice_size,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1265
wrp_alu_imm(struct nfp_prog *nfp_prog, u8 dst, enum alu_op alu_op, u32 imm)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
127
emit_cmd(struct nfp_prog *nfp_prog, enum cmd_tgt_map op, u8 mode, u8 xfer,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1271
wrp_immed(nfp_prog, reg_both(dst), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1277
wrp_immed(nfp_prog, reg_both(dst), ~0U);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1283
emit_alu(nfp_prog, reg_both(dst), reg_none(),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1289
tmp_reg = ur_load_imm_any(nfp_prog, imm, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1290
emit_alu(nfp_prog, reg_both(dst), reg_a(dst), alu_op, tmp_reg);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1294
wrp_alu64_imm(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
130
emit_cmd_any(nfp_prog, op, mode, xfer, lreg, rreg, size, ctx, false);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1305
wrp_alu_imm(nfp_prog, insn->dst_reg * 2, alu_op, imm & ~0U);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1306
wrp_alu_imm(nfp_prog, insn->dst_reg * 2 + 1, alu_op, imm >> 32);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1312
wrp_alu64_reg(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1317
emit_alu(nfp_prog, reg_both(dst), reg_a(dst), alu_op, reg_b(src));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1318
emit_alu(nfp_prog, reg_both(dst + 1),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1325
wrp_alu32_imm(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1331
wrp_alu_imm(nfp_prog, dst, alu_op, insn->imm);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1332
wrp_zext(nfp_prog, meta, dst);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1338
wrp_alu32_reg(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
134
emit_cmd_indir(struct nfp_prog *nfp_prog, enum cmd_tgt_map op, u8 mode, u8 xfer,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1343
emit_alu(nfp_prog, reg_both(dst), reg_a(dst), alu_op, reg_b(src));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1344
wrp_zext(nfp_prog, meta, dst);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1350
wrp_test_reg_one(struct nfp_prog *nfp_prog, u8 dst, enum alu_op alu_op, u8 src,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1353
emit_alu(nfp_prog, reg_none(), reg_a(dst), alu_op, reg_b(src));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1354
emit_br(nfp_prog, br_mask, off, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1358
wrp_test_reg(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1363
wrp_test_reg_one(nfp_prog, insn->dst_reg * 2, alu_op,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1366
wrp_test_reg_one(nfp_prog, insn->dst_reg * 2 + 1, alu_op,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
137
emit_cmd_any(nfp_prog, op, mode, xfer, lreg, rreg, size, ctx, true);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1400
static int cmp_imm(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
141
__emit_br(struct nfp_prog *nfp_prog, enum br_mask mask, enum br_ev_pip ev_pip,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1416
tmp_reg = ur_load_imm_any(nfp_prog, imm & ~0U, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1418
emit_alu(nfp_prog, reg_none(), reg_a(reg), alu_op, tmp_reg);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1420
emit_alu(nfp_prog, reg_none(), tmp_reg, alu_op, reg_a(reg));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1423
tmp_reg = ur_load_imm_any(nfp_prog, imm >> 32, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1425
emit_alu(nfp_prog, reg_none(),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1428
emit_alu(nfp_prog, reg_none(),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1432
emit_br(nfp_prog, code->br_mask, insn->off, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1437
static int cmp_reg(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1456
emit_alu(nfp_prog, reg_none(), reg_a(areg), ALU_OP_SUB, reg_b(breg));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1458
emit_alu(nfp_prog, reg_none(),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1460
emit_br(nfp_prog, code->br_mask, insn->off, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1465
static void wrp_end32(struct nfp_prog *nfp_prog, swreg reg_in, u8 gpr_out)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1467
emit_ld_field(nfp_prog, reg_both(gpr_out), 0xf, reg_in,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1469
emit_ld_field(nfp_prog, reg_both(gpr_out), 0x5, reg_a(gpr_out),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1474
wrp_mul_u32(struct nfp_prog *nfp_prog, swreg dst_hi, swreg dst_lo, swreg lreg,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1477
emit_mul(nfp_prog, lreg, MUL_TYPE_START, MUL_STEP_NONE, rreg);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1478
emit_mul(nfp_prog, lreg, MUL_TYPE_STEP_32x32, MUL_STEP_1, rreg);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1479
emit_mul(nfp_prog, lreg, MUL_TYPE_STEP_32x32, MUL_STEP_2, rreg);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1480
emit_mul(nfp_prog, lreg, MUL_TYPE_STEP_32x32, MUL_STEP_3, rreg);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1481
emit_mul(nfp_prog, lreg, MUL_TYPE_STEP_32x32, MUL_STEP_4, rreg);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1482
emit_mul(nfp_prog, dst_lo, MUL_TYPE_STEP_32x32, MUL_LAST, reg_none());
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1484
emit_mul(nfp_prog, dst_hi, MUL_TYPE_STEP_32x32, MUL_LAST_2,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1487
wrp_immed(nfp_prog, dst_hi, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1491
wrp_mul_u16(struct nfp_prog *nfp_prog, swreg dst_hi, swreg dst_lo, swreg lreg,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1494
emit_mul(nfp_prog, lreg, MUL_TYPE_START, MUL_STEP_NONE, rreg);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1495
emit_mul(nfp_prog, lreg, MUL_TYPE_STEP_16x16, MUL_STEP_1, rreg);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1496
emit_mul(nfp_prog, lreg, MUL_TYPE_STEP_16x16, MUL_STEP_2, rreg);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1497
emit_mul(nfp_prog, dst_lo, MUL_TYPE_STEP_16x16, MUL_LAST, reg_none());
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1501
wrp_mul(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1520
multiplier = ur_load_imm_any(nfp_prog, imm, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1524
wrp_mul_u32(nfp_prog, dst_hi, dst_lo, multiplicand, multiplier,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1527
wrp_mul_u16(nfp_prog, dst_hi, dst_lo, multiplicand, multiplier);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1532
static int wrp_div_imm(struct nfp_prog *nfp_prog, u8 dst, u64 imm)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1540
wrp_immed(nfp_prog, dst_both, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1556
swreg tmp_b = ur_load_imm_any(nfp_prog, imm, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1558
emit_alu(nfp_prog, reg_none(), dst_a, ALU_OP_SUB, tmp_b);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1559
wrp_immed(nfp_prog, imm_a(nfp_prog), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1560
emit_alu(nfp_prog, dst_both, imm_a(nfp_prog), ALU_OP_ADD_C,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1573
magic = ur_load_imm_any(nfp_prog, rvalue.m, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1575
emit_shf(nfp_prog, dst_both, reg_none(), SHF_OP_NONE, dst_b,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1578
wrp_mul_u32(nfp_prog, imm_both(nfp_prog), reg_none(), dst_a,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
158
nfp_prog_push(nfp_prog, insn);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1580
emit_alu(nfp_prog, dst_both, dst_a, ALU_OP_SUB,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1581
imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1582
emit_shf(nfp_prog, dst_both, reg_none(), SHF_OP_NONE, dst_b,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1584
emit_alu(nfp_prog, dst_both, dst_a, ALU_OP_ADD,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1585
imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1586
emit_shf(nfp_prog, dst_both, reg_none(), SHF_OP_NONE, dst_b,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1590
emit_shf(nfp_prog, dst_both, reg_none(), SHF_OP_NONE,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1592
wrp_mul_u32(nfp_prog, dst_both, reg_none(), dst_a, magic, true);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1593
emit_shf(nfp_prog, dst_both, reg_none(), SHF_OP_NONE,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1600
static int adjust_head(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1602
swreg tmp = imm_a(nfp_prog), tmp_len = imm_b(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1606
adjust_head = &nfp_prog->bpf->adjust_head;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1609
if (nfp_prog->adjust_head_location != UINT_MAX) {
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1610
if (WARN_ON_ONCE(nfp_prog->adjust_head_location != meta->n))
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1613
emit_alu(nfp_prog, pptr_reg(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1614
reg_a(2 * 2), ALU_OP_ADD, pptr_reg(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1615
emit_alu(nfp_prog, plen_reg(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1616
plen_reg(nfp_prog), ALU_OP_SUB, reg_a(2 * 2));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1617
emit_alu(nfp_prog, pv_len(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1618
pv_len(nfp_prog), ALU_OP_SUB, reg_a(2 * 2));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
162
emit_br_relo(struct nfp_prog *nfp_prog, enum br_mask mask, u16 addr, u8 defer,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1620
wrp_immed(nfp_prog, reg_both(0), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1621
wrp_immed(nfp_prog, reg_both(1), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1630
ret_einval = nfp_prog_current_offset(nfp_prog) + 14;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1634
emit_alu(nfp_prog, tmp,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1635
reg_a(2 * 2), ALU_OP_ADD_2B, pptr_reg(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1638
emit_alu(nfp_prog, reg_none(),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1640
emit_br(nfp_prog, BR_BLO, ret_einval, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1641
emit_alu(nfp_prog, reg_none(),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1643
emit_br(nfp_prog, BR_BLO, ret_einval, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1646
emit_alu(nfp_prog, tmp_len,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1647
plen_reg(nfp_prog), ALU_OP_SUB, reg_a(2 * 2));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1648
emit_alu(nfp_prog, reg_none(),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1650
emit_br(nfp_prog, BR_BMI, ret_einval, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1653
wrp_immed(nfp_prog, reg_both(0), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1654
wrp_immed(nfp_prog, reg_both(1), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1657
emit_ld_field(nfp_prog, pptr_reg(nfp_prog), 0x3, tmp, SHF_SC_NONE, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1660
emit_br(nfp_prog, BR_UNC, end, 2);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1662
emit_alu(nfp_prog, plen_reg(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1663
plen_reg(nfp_prog), ALU_OP_SUB, reg_a(2 * 2));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1664
emit_alu(nfp_prog, pv_len(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1665
pv_len(nfp_prog), ALU_OP_SUB, reg_a(2 * 2));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1668
if (!nfp_prog_confirm_current_offset(nfp_prog, ret_einval))
drivers/net/ethernet/netronome/nfp/bpf/jit.c
167
nfp_prog->error = -EFAULT;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1671
wrp_immed(nfp_prog, reg_both(0), -22);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1672
wrp_immed(nfp_prog, reg_both(1), ~0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1674
if (!nfp_prog_confirm_current_offset(nfp_prog, end))
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1680
static int adjust_tail(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1685
BUILD_BUG_ON(plen_reg(nfp_prog) != reg_b(STATIC_REG_PKT_LEN));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1687
plen = imm_a(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1690
ret_einval = nfp_prog_current_offset(nfp_prog) + 9;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1691
end = nfp_prog_current_offset(nfp_prog) + 11;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1694
emit_alu(nfp_prog, plen, plen_reg(nfp_prog), ALU_OP_ADD, delta);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1698
emit_br(nfp_prog, BR_BCC, ret_einval, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1701
emit_alu(nfp_prog, reg_none(), plen, ALU_OP_SUB, reg_imm(ETH_HLEN));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1702
emit_br(nfp_prog, BR_BMI, ret_einval, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1704
emit_alu(nfp_prog, plen_reg(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1705
plen_reg(nfp_prog), ALU_OP_ADD, delta);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1706
emit_alu(nfp_prog, pv_len(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1707
pv_len(nfp_prog), ALU_OP_ADD, delta);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1709
emit_br(nfp_prog, BR_UNC, end, 2);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
171
__emit_br(nfp_prog, mask,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1710
wrp_immed(nfp_prog, reg_both(0), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1711
wrp_immed(nfp_prog, reg_both(1), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1713
if (!nfp_prog_confirm_current_offset(nfp_prog, ret_einval))
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1716
wrp_immed(nfp_prog, reg_both(0), -22);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1717
wrp_immed(nfp_prog, reg_both(1), ~0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1719
if (!nfp_prog_confirm_current_offset(nfp_prog, end))
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1726
map_call_stack_common(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1733
lm_off = nfp_prog->stack_frame_depth;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1739
emit_csr_wr(nfp_prog, reg_b(2 * 2), NFP_CSR_ACT_LM_ADDR0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1741
emit_csr_wr(nfp_prog, reg_b(3 * 2), NFP_CSR_ACT_LM_ADDR2);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1743
emit_br_relo(nfp_prog, BR_UNC, BR_OFF_RELO + meta->func_id,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1745
ret_tgt = nfp_prog_current_offset(nfp_prog) + 2;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1748
wrp_mov(nfp_prog, reg_a(0), reg_a(2));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
175
nfp_prog->prog[nfp_prog->prog_len - 1] |=
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1751
wrp_immed_relo(nfp_prog, reg_b(0), ret_tgt, RELO_IMMED_REL);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1753
if (!nfp_prog_confirm_current_offset(nfp_prog, ret_tgt))
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1760
emit_csr_wr(nfp_prog, stack_reg(nfp_prog), NFP_CSR_ACT_LM_ADDR0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1761
wrp_nops(nfp_prog, 3);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1767
nfp_get_prandom_u32(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1769
__emit_csr_rd(nfp_prog, NFP_CSR_PSEUDO_RND_NUM);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1771
emit_immed(nfp_prog, reg_both(0), 0,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1773
emit_immed(nfp_prog, reg_both(1), 0,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1779
nfp_perf_event_output(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1784
ptr_type = ur_load_imm_any(nfp_prog, meta->arg1.type, imm_a(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1786
ret_tgt = nfp_prog_current_offset(nfp_prog) + 3;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1788
emit_br_relo(nfp_prog, BR_UNC, BR_OFF_RELO + meta->func_id,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1792
wrp_mov(nfp_prog, reg_a(1), ptr_type);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1795
wrp_immed_relo(nfp_prog, reg_b(0), ret_tgt, RELO_IMMED_REL);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1797
if (!nfp_prog_confirm_current_offset(nfp_prog, ret_tgt))
drivers/net/ethernet/netronome/nfp/bpf/jit.c
180
emit_br(struct nfp_prog *nfp_prog, enum br_mask mask, u16 addr, u8 defer)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1804
nfp_queue_select(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1808
jmp_tgt = nfp_prog_current_offset(nfp_prog) + 5;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1811
emit_alu(nfp_prog, reg_none(), reg_a(meta->insn.src_reg * 2),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1813
emit_br(nfp_prog, BR_BEQ, jmp_tgt, 2);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1816
emit_shf(nfp_prog, pv_qsel_set(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1817
pv_qsel_set(nfp_prog), SHF_OP_OR, reg_imm(1),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1819
emit_ld_field(nfp_prog,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
182
emit_br_relo(nfp_prog, mask, addr, defer, RELO_BR_REL);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1820
pv_qsel_val(nfp_prog), 0x1, reg_b(meta->insn.src_reg * 2),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1825
emit_ld_field(nfp_prog,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1826
pv_qsel_val(nfp_prog), 0x1, reg_imm(NFP_NET_RXR_MAX),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1829
if (!nfp_prog_confirm_current_offset(nfp_prog, jmp_tgt))
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1836
static int mov_reg64(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1845
stack_depth_reg = ur_load_imm_any(nfp_prog,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1846
nfp_prog->stack_frame_depth,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1847
stack_imm(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1848
emit_alu(nfp_prog, reg_both(dst), stack_reg(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1850
wrp_immed(nfp_prog, reg_both(dst + 1), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1852
wrp_reg_mov(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1853
wrp_reg_mov(nfp_prog, dst + 1, src + 1);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1859
static int mov_imm64(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
186
__emit_br_bit(struct nfp_prog *nfp_prog, u16 areg, u16 breg, u16 addr, u8 defer,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1863
wrp_immed(nfp_prog, reg_both(meta->insn.dst_reg * 2), imm & ~0U);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1864
wrp_immed(nfp_prog, reg_both(meta->insn.dst_reg * 2 + 1), imm >> 32);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1869
static int xor_reg64(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1871
return wrp_alu64_reg(nfp_prog, meta, ALU_OP_XOR);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1874
static int xor_imm64(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1876
return wrp_alu64_imm(nfp_prog, meta, ALU_OP_XOR, !meta->insn.imm);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1879
static int and_reg64(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1881
return wrp_alu64_reg(nfp_prog, meta, ALU_OP_AND);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1884
static int and_imm64(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1886
return wrp_alu64_imm(nfp_prog, meta, ALU_OP_AND, !~meta->insn.imm);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1889
static int or_reg64(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1891
return wrp_alu64_reg(nfp_prog, meta, ALU_OP_OR);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1894
static int or_imm64(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1896
return wrp_alu64_imm(nfp_prog, meta, ALU_OP_OR, !meta->insn.imm);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1899
static int add_reg64(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1903
emit_alu(nfp_prog, reg_both(insn->dst_reg * 2),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1906
emit_alu(nfp_prog, reg_both(insn->dst_reg * 2 + 1),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1913
static int add_imm64(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1918
wrp_alu_imm(nfp_prog, insn->dst_reg * 2, ALU_OP_ADD, imm & ~0U);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1919
wrp_alu_imm(nfp_prog, insn->dst_reg * 2 + 1, ALU_OP_ADD_C, imm >> 32);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1924
static int sub_reg64(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1928
emit_alu(nfp_prog, reg_both(insn->dst_reg * 2),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1931
emit_alu(nfp_prog, reg_both(insn->dst_reg * 2 + 1),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1938
static int sub_imm64(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1943
wrp_alu_imm(nfp_prog, insn->dst_reg * 2, ALU_OP_SUB, imm & ~0U);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1944
wrp_alu_imm(nfp_prog, insn->dst_reg * 2 + 1, ALU_OP_SUB_C, imm >> 32);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1949
static int mul_reg64(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1951
return wrp_mul(nfp_prog, meta, true, true);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1954
static int mul_imm64(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1956
return wrp_mul(nfp_prog, meta, true, false);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1959
static int div_imm64(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1963
return wrp_div_imm(nfp_prog, insn->dst_reg * 2, insn->imm);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1966
static int div_reg64(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1971
return wrp_div_imm(nfp_prog, meta->insn.dst_reg * 2, meta->umin_src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1974
static int neg_reg64(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1978
emit_alu(nfp_prog, reg_both(insn->dst_reg * 2), reg_imm(0),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1980
emit_alu(nfp_prog, reg_both(insn->dst_reg * 2 + 1), reg_imm(0),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
1996
static int __shl_imm64(struct nfp_prog *nfp_prog, u8 dst, u8 shift_amt)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2002
emit_shf(nfp_prog, reg_both(dst + 1), reg_a(dst + 1),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2005
emit_shf(nfp_prog, reg_both(dst), reg_none(), SHF_OP_NONE,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2008
wrp_reg_mov(nfp_prog, dst + 1, dst);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2009
wrp_immed(nfp_prog, reg_both(dst), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2011
emit_shf(nfp_prog, reg_both(dst + 1), reg_none(), SHF_OP_NONE,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2013
wrp_immed(nfp_prog, reg_both(dst), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2019
static int shl_imm64(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2024
return __shl_imm64(nfp_prog, dst, insn->imm);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2027
static void shl_reg64_lt32_high(struct nfp_prog *nfp_prog, u8 dst, u8 src)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2029
emit_alu(nfp_prog, imm_both(nfp_prog), reg_imm(32), ALU_OP_SUB,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2031
emit_alu(nfp_prog, reg_none(), imm_a(nfp_prog), ALU_OP_OR, reg_imm(0));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2032
emit_shf_indir(nfp_prog, reg_both(dst + 1), reg_a(dst + 1), SHF_OP_NONE,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2037
static void shl_reg64_lt32_low(struct nfp_prog *nfp_prog, u8 dst, u8 src)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2039
emit_alu(nfp_prog, reg_none(), reg_a(src), ALU_OP_OR, reg_imm(0));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
204
nfp_prog_push(nfp_prog, insn);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2040
emit_shf_indir(nfp_prog, reg_both(dst), reg_none(), SHF_OP_NONE,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2044
static void shl_reg64_lt32(struct nfp_prog *nfp_prog, u8 dst, u8 src)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2046
shl_reg64_lt32_high(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2047
shl_reg64_lt32_low(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2050
static void shl_reg64_ge32(struct nfp_prog *nfp_prog, u8 dst, u8 src)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2052
emit_alu(nfp_prog, reg_none(), reg_a(src), ALU_OP_OR, reg_imm(0));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2053
emit_shf_indir(nfp_prog, reg_both(dst + 1), reg_none(), SHF_OP_NONE,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2055
wrp_immed(nfp_prog, reg_both(dst), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2058
static int shl_reg64(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2068
return __shl_imm64(nfp_prog, dst, umin);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2072
shl_reg64_lt32(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2074
shl_reg64_ge32(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
208
emit_br_bit_relo(struct nfp_prog *nfp_prog, swreg src, u8 bit, u16 addr,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2081
label_ge32 = nfp_prog_current_offset(nfp_prog) + 7;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2082
emit_br_bset(nfp_prog, reg_a(src), 5, label_ge32, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2084
shl_reg64_lt32_high(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2085
label_end = nfp_prog_current_offset(nfp_prog) + 6;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2086
emit_br(nfp_prog, BR_UNC, label_end, 2);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2088
shl_reg64_lt32_low(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2090
if (!nfp_prog_confirm_current_offset(nfp_prog, label_ge32))
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2092
shl_reg64_ge32(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2094
if (!nfp_prog_confirm_current_offset(nfp_prog, label_end))
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2111
static int __shr_imm64(struct nfp_prog *nfp_prog, u8 dst, u8 shift_amt)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2117
emit_shf(nfp_prog, reg_both(dst), reg_a(dst + 1), SHF_OP_NONE,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2119
emit_shf(nfp_prog, reg_both(dst + 1), reg_none(), SHF_OP_NONE,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2122
wrp_reg_mov(nfp_prog, dst, dst + 1);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2123
wrp_immed(nfp_prog, reg_both(dst + 1), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2125
emit_shf(nfp_prog, reg_both(dst), reg_none(), SHF_OP_NONE,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2127
wrp_immed(nfp_prog, reg_both(dst + 1), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2133
static int shr_imm64(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2138
return __shr_imm64(nfp_prog, dst, insn->imm);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2142
static void shr_reg64_lt32_high(struct nfp_prog *nfp_prog, u8 dst, u8 src)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2144
emit_alu(nfp_prog, reg_none(), reg_a(src), ALU_OP_OR, reg_imm(0));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2145
emit_shf_indir(nfp_prog, reg_both(dst + 1), reg_none(), SHF_OP_NONE,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2149
static void shr_reg64_lt32_low(struct nfp_prog *nfp_prog, u8 dst, u8 src)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2151
emit_alu(nfp_prog, reg_none(), reg_a(src), ALU_OP_OR, reg_imm(0));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2152
emit_shf_indir(nfp_prog, reg_both(dst), reg_a(dst + 1), SHF_OP_NONE,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2156
static void shr_reg64_lt32(struct nfp_prog *nfp_prog, u8 dst, u8 src)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2158
shr_reg64_lt32_low(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2159
shr_reg64_lt32_high(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2162
static void shr_reg64_ge32(struct nfp_prog *nfp_prog, u8 dst, u8 src)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2164
emit_alu(nfp_prog, reg_none(), reg_a(src), ALU_OP_OR, reg_imm(0));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2165
emit_shf_indir(nfp_prog, reg_both(dst), reg_none(), SHF_OP_NONE,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2167
wrp_immed(nfp_prog, reg_both(dst + 1), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2170
static int shr_reg64(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2180
return __shr_imm64(nfp_prog, dst, umin);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2184
shr_reg64_lt32(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2186
shr_reg64_ge32(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2193
label_ge32 = nfp_prog_current_offset(nfp_prog) + 6;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2194
emit_br_bset(nfp_prog, reg_a(src), 5, label_ge32, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2195
shr_reg64_lt32_low(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2196
label_end = nfp_prog_current_offset(nfp_prog) + 6;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2197
emit_br(nfp_prog, BR_UNC, label_end, 2);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2199
shr_reg64_lt32_high(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
22
#define nfp_for_each_insn_walk2(nfp_prog, pos, next) \
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2201
if (!nfp_prog_confirm_current_offset(nfp_prog, label_ge32))
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2203
shr_reg64_ge32(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2205
if (!nfp_prog_confirm_current_offset(nfp_prog, label_end))
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2215
static int __ashr_imm64(struct nfp_prog *nfp_prog, u8 dst, u8 shift_amt)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
222
nfp_prog->error = err;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2221
emit_shf(nfp_prog, reg_both(dst), reg_a(dst + 1), SHF_OP_NONE,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2224
emit_alu(nfp_prog, reg_none(), reg_a(dst + 1), ALU_OP_OR,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2226
emit_shf(nfp_prog, reg_both(dst + 1), reg_none(), SHF_OP_ASHR,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2230
wrp_reg_mov(nfp_prog, dst, dst + 1);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2231
emit_shf(nfp_prog, reg_both(dst + 1), reg_none(), SHF_OP_ASHR,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2234
emit_alu(nfp_prog, reg_none(), reg_a(dst + 1), ALU_OP_OR,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2236
emit_shf(nfp_prog, reg_both(dst), reg_none(), SHF_OP_ASHR,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2238
emit_shf(nfp_prog, reg_both(dst + 1), reg_none(), SHF_OP_ASHR,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2245
static int ashr_imm64(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2250
return __ashr_imm64(nfp_prog, dst, insn->imm);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2253
static void ashr_reg64_lt32_high(struct nfp_prog *nfp_prog, u8 dst, u8 src)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2258
emit_alu(nfp_prog, reg_none(), reg_a(src), ALU_OP_OR, reg_b(dst + 1));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2259
emit_shf_indir(nfp_prog, reg_both(dst + 1), reg_none(), SHF_OP_ASHR,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
226
__emit_br_bit(nfp_prog, reg.areg, reg.breg, addr, defer, set,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2263
static void ashr_reg64_lt32_low(struct nfp_prog *nfp_prog, u8 dst, u8 src)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2268
return shr_reg64_lt32_low(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2271
static void ashr_reg64_lt32(struct nfp_prog *nfp_prog, u8 dst, u8 src)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2273
ashr_reg64_lt32_low(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2274
ashr_reg64_lt32_high(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2277
static void ashr_reg64_ge32(struct nfp_prog *nfp_prog, u8 dst, u8 src)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2279
emit_alu(nfp_prog, reg_none(), reg_a(src), ALU_OP_OR, reg_b(dst + 1));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2280
emit_shf_indir(nfp_prog, reg_both(dst), reg_none(), SHF_OP_ASHR,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2282
emit_shf(nfp_prog, reg_both(dst + 1), reg_none(), SHF_OP_ASHR,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2287
static int ashr_reg64(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
229
nfp_prog->prog[nfp_prog->prog_len - 1] |=
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2297
return __ashr_imm64(nfp_prog, dst, umin);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
23
for (pos = list_first_entry(&(nfp_prog)->insns, typeof(*pos), l), \
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2301
ashr_reg64_lt32(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2303
ashr_reg64_ge32(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2307
label_ge32 = nfp_prog_current_offset(nfp_prog) + 6;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2308
emit_br_bset(nfp_prog, reg_a(src), 5, label_ge32, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2309
ashr_reg64_lt32_low(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2310
label_end = nfp_prog_current_offset(nfp_prog) + 6;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2311
emit_br(nfp_prog, BR_UNC, label_end, 2);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2313
ashr_reg64_lt32_high(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2315
if (!nfp_prog_confirm_current_offset(nfp_prog, label_ge32))
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2317
ashr_reg64_ge32(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2319
if (!nfp_prog_confirm_current_offset(nfp_prog, label_end))
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2326
static int mov_reg(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2330
wrp_reg_mov(nfp_prog, insn->dst_reg * 2, insn->src_reg * 2);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2331
wrp_immed(nfp_prog, reg_both(insn->dst_reg * 2 + 1), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2336
static int mov_imm(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
234
emit_br_bset(struct nfp_prog *nfp_prog, swreg src, u8 bit, u16 addr, u8 defer)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2340
wrp_immed(nfp_prog, reg_both(insn->dst_reg * 2), insn->imm);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2341
wrp_immed(nfp_prog, reg_both(insn->dst_reg * 2 + 1), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2346
static int xor_reg(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2348
return wrp_alu32_reg(nfp_prog, meta, ALU_OP_XOR);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2351
static int xor_imm(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2353
return wrp_alu32_imm(nfp_prog, meta, ALU_OP_XOR);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2356
static int and_reg(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2358
return wrp_alu32_reg(nfp_prog, meta, ALU_OP_AND);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
236
emit_br_bit_relo(nfp_prog, src, bit, addr, defer, true, RELO_BR_REL);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2361
static int and_imm(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2363
return wrp_alu32_imm(nfp_prog, meta, ALU_OP_AND);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2366
static int or_reg(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2368
return wrp_alu32_reg(nfp_prog, meta, ALU_OP_OR);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2371
static int or_imm(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2373
return wrp_alu32_imm(nfp_prog, meta, ALU_OP_OR);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2376
static int add_reg(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2378
return wrp_alu32_reg(nfp_prog, meta, ALU_OP_ADD);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2381
static int add_imm(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2383
return wrp_alu32_imm(nfp_prog, meta, ALU_OP_ADD);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2386
static int sub_reg(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2388
return wrp_alu32_reg(nfp_prog, meta, ALU_OP_SUB);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2391
static int sub_imm(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2393
return wrp_alu32_imm(nfp_prog, meta, ALU_OP_SUB);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2396
static int mul_reg(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2398
return wrp_mul(nfp_prog, meta, false, true);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
240
__emit_br_alu(struct nfp_prog *nfp_prog, u16 areg, u16 breg, u16 imm_hi,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2401
static int mul_imm(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2403
return wrp_mul(nfp_prog, meta, false, false);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2406
static int div_reg(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2408
return div_reg64(nfp_prog, meta);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2411
static int div_imm(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2413
return div_imm64(nfp_prog, meta);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2416
static int neg_reg(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2420
emit_alu(nfp_prog, reg_both(dst), reg_imm(0), ALU_OP_SUB, reg_b(dst));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2421
wrp_zext(nfp_prog, meta, dst);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2427
__ashr_imm(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta, u8 dst,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2432
emit_alu(nfp_prog, reg_none(), reg_a(dst), ALU_OP_OR,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2434
emit_shf(nfp_prog, reg_both(dst), reg_none(), SHF_OP_ASHR,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2437
wrp_zext(nfp_prog, meta, dst);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2442
static int ashr_reg(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2452
return __ashr_imm(nfp_prog, meta, dst, umin);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2458
emit_alu(nfp_prog, reg_none(), reg_a(src), ALU_OP_OR, reg_b(dst));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2459
emit_shf_indir(nfp_prog, reg_both(dst), reg_none(), SHF_OP_ASHR,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2461
wrp_zext(nfp_prog, meta, dst);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2466
static int ashr_imm(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2471
return __ashr_imm(nfp_prog, meta, dst, insn->imm);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2475
__shr_imm(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta, u8 dst,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2479
emit_shf(nfp_prog, reg_both(dst), reg_none(), SHF_OP_NONE,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2481
wrp_zext(nfp_prog, meta, dst);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2485
static int shr_imm(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2490
return __shr_imm(nfp_prog, meta, dst, insn->imm);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2493
static int shr_reg(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
25
&(nfp_prog)->insns != &pos->l && \
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2503
return __shr_imm(nfp_prog, meta, dst, umin);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2506
emit_alu(nfp_prog, reg_none(), reg_a(src), ALU_OP_OR, reg_imm(0));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2507
emit_shf_indir(nfp_prog, reg_both(dst), reg_none(), SHF_OP_NONE,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2509
wrp_zext(nfp_prog, meta, dst);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2514
__shl_imm(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta, u8 dst,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2518
emit_shf(nfp_prog, reg_both(dst), reg_none(), SHF_OP_NONE,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2520
wrp_zext(nfp_prog, meta, dst);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2524
static int shl_imm(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2529
return __shl_imm(nfp_prog, meta, dst, insn->imm);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
253
nfp_prog_push(nfp_prog, insn);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2532
static int shl_reg(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2542
return __shl_imm(nfp_prog, meta, dst, umin);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2545
shl_reg64_lt32_low(nfp_prog, dst, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2546
wrp_zext(nfp_prog, meta, dst);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2550
static int end_reg32(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2557
emit_ld_field(nfp_prog, reg_both(gpr), 0x9, reg_b(gpr),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2559
emit_ld_field(nfp_prog, reg_both(gpr), 0xe, reg_a(gpr),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
256
static void emit_rtn(struct nfp_prog *nfp_prog, swreg base, u8 defer)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2562
wrp_immed(nfp_prog, reg_both(gpr + 1), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2565
wrp_end32(nfp_prog, reg_a(gpr), gpr);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2566
wrp_immed(nfp_prog, reg_both(gpr + 1), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2569
wrp_mov(nfp_prog, imm_a(nfp_prog), reg_b(gpr + 1));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2571
wrp_end32(nfp_prog, reg_a(gpr), gpr + 1);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2572
wrp_end32(nfp_prog, imm_a(nfp_prog), gpr);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2579
static int imm_ld8_part2(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2589
wrp_immed(nfp_prog, reg_both(dst), imm_lo);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2593
wrp_mov(nfp_prog, reg_both(dst + 1), reg_a(dst));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2595
wrp_immed(nfp_prog, reg_both(dst + 1), imm_hi);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
26
&(nfp_prog)->insns != &next->l; \
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2600
static int imm_ld8(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2606
static int data_ld1(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2608
return construct_data_ld(nfp_prog, meta, meta->insn.imm, 1);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2611
static int data_ld2(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2613
return construct_data_ld(nfp_prog, meta, meta->insn.imm, 2);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2616
static int data_ld4(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2618
return construct_data_ld(nfp_prog, meta, meta->insn.imm, 4);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2621
static int data_ind_ld1(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2623
return construct_data_ind_ld(nfp_prog, meta, meta->insn.imm,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2627
static int data_ind_ld2(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2629
return construct_data_ind_ld(nfp_prog, meta, meta->insn.imm,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
263
nfp_prog->error = err;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2633
static int data_ind_ld4(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2635
return construct_data_ind_ld(nfp_prog, meta, meta->insn.imm,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2640
mem_ldx_stack(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2643
return mem_op_stack(nfp_prog, meta, size, ptr_off,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2648
static int mem_ldx_skb(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2657
wrp_mov(nfp_prog, dst, plen_reg(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2662
wrp_mov(nfp_prog, dst, pptr_reg(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2667
emit_alu(nfp_prog, dst,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2668
plen_reg(nfp_prog), ALU_OP_ADD, pptr_reg(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
267
__emit_br_alu(nfp_prog, reg.areg, reg.breg, 0, defer, reg.dst_lmextn,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2674
wrp_immed(nfp_prog, reg_both(meta->insn.dst_reg * 2 + 1), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2679
static int mem_ldx_xdp(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2688
wrp_mov(nfp_prog, dst, pptr_reg(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2693
emit_alu(nfp_prog, dst,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2694
plen_reg(nfp_prog), ALU_OP_ADD, pptr_reg(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2700
wrp_immed(nfp_prog, reg_both(meta->insn.dst_reg * 2 + 1), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2706
mem_ldx_data(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2711
tmp_reg = re_load_imm_any(nfp_prog, meta->insn.off, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2713
return data_ld_host_order_addr32(nfp_prog, meta, meta->insn.src_reg * 2,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2718
mem_ldx_emem(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
272
__emit_immed(struct nfp_prog *nfp_prog, u16 areg, u16 breg, u16 imm_hi,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2723
tmp_reg = re_load_imm_any(nfp_prog, meta->insn.off, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2725
return data_ld_host_order_addr40(nfp_prog, meta, meta->insn.src_reg * 2,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2730
mem_ldx_data_init_pktcache(struct nfp_prog *nfp_prog,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2739
off = re_load_imm_any(nfp_prog, range_start, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2747
wrp_immed(nfp_prog, reg_none(),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2751
emit_cmd_any(nfp_prog, CMD_TGT_READ32_SWAP, CMD_MODE_32b, 0, src_base,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2756
mem_ldx_data_from_pktcache_unaligned(struct nfp_prog *nfp_prog,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2783
wrp_reg_subpart(nfp_prog, dst_lo, src_lo, len_lo, off);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2786
wrp_zext(nfp_prog, meta, dst_gpr);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2793
wrp_reg_or_subpart(nfp_prog, dst_lo, src_mid, len_mid, len_lo);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2794
wrp_zext(nfp_prog, meta, dst_gpr);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2798
wrp_reg_or_subpart(nfp_prog, dst_lo, src_mid,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2800
wrp_reg_subpart(nfp_prog, dst_hi, src_mid, len_lo,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2802
wrp_reg_or_subpart(nfp_prog, dst_hi, src_hi, REG_WIDTH - len_lo,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2810
mem_ldx_data_from_pktcache_aligned(struct nfp_prog *nfp_prog,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2824
wrp_reg_subpart(nfp_prog, dst_lo, src_lo, size, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2825
wrp_zext(nfp_prog, meta, dst_gpr);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2827
wrp_mov(nfp_prog, dst_lo, src_lo);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2828
wrp_zext(nfp_prog, meta, dst_gpr);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2832
wrp_mov(nfp_prog, dst_lo, src_lo);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2833
wrp_mov(nfp_prog, dst_hi, src_hi);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2840
mem_ldx_data_from_pktcache(struct nfp_prog *nfp_prog,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2846
return mem_ldx_data_from_pktcache_aligned(nfp_prog, meta, size);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2848
return mem_ldx_data_from_pktcache_unaligned(nfp_prog, meta, size);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2852
mem_ldx(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2856
return nfp_cpp_memcpy(nfp_prog, meta);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2859
if (nfp_prog->type == BPF_PROG_TYPE_XDP)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2860
return mem_ldx_xdp(nfp_prog, meta, size);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2862
return mem_ldx_skb(nfp_prog, meta, size);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2868
mem_ldx_data_init_pktcache(nfp_prog, meta);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2870
return mem_ldx_data_from_pktcache(nfp_prog, meta, size);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2872
return mem_ldx_data(nfp_prog, meta, size);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2877
return mem_ldx_stack(nfp_prog, meta, size, meta->ptr.var_off.value);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2880
return mem_ldx_emem(nfp_prog, meta, size);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2885
static int mem_ldx1(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2887
return mem_ldx(nfp_prog, meta, 1);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2890
static int mem_ldx2(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2892
return mem_ldx(nfp_prog, meta, 2);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2895
static int mem_ldx4(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2897
return mem_ldx(nfp_prog, meta, 4);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
290
nfp_prog_push(nfp_prog, insn);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2900
static int mem_ldx8(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2902
return mem_ldx(nfp_prog, meta, 8);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2906
mem_st_data(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2912
off_reg = re_load_imm_any(nfp_prog, meta->insn.off, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2914
return data_st_host_order(nfp_prog, meta->insn.dst_reg * 2, off_reg,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2918
static int mem_st(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2922
return mem_st_data(nfp_prog, meta, size);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2927
static int mem_st1(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2929
return mem_st(nfp_prog, meta, 1);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2932
static int mem_st2(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2934
return mem_st(nfp_prog, meta, 2);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2937
static int mem_st4(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2939
return mem_st(nfp_prog, meta, 4);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
294
emit_immed(struct nfp_prog *nfp_prog, swreg dst, u16 imm,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2942
static int mem_st8(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2944
return mem_st(nfp_prog, meta, 8);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2948
mem_stx_data(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2953
off_reg = re_load_imm_any(nfp_prog, meta->insn.off, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2955
return data_stx_host_order(nfp_prog, meta->insn.dst_reg * 2, off_reg,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2960
mem_stx_stack(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2963
return mem_op_stack(nfp_prog, meta, size, ptr_off,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2968
static int mem_stx_xdp(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2972
return nfp_queue_select(nfp_prog, meta);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2980
mem_stx(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2984
return mem_stx_data(nfp_prog, meta, size);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2987
return mem_stx_stack(nfp_prog, meta, size, meta->ptr.var_off.value);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2992
static int mem_stx1(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2994
return mem_stx(nfp_prog, meta, 1);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2997
static int mem_stx2(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
2999
return mem_stx(nfp_prog, meta, 2);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
30
#define nfp_for_each_insn_walk3(nfp_prog, pos, next, next2) \
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3002
static int mem_stx4(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3005
if (nfp_prog->type == BPF_PROG_TYPE_XDP)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3006
return mem_stx_xdp(nfp_prog, meta);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3007
return mem_stx(nfp_prog, meta, 4);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
301
nfp_prog->error = -EFAULT;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3010
static int mem_stx8(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3012
return mem_stx(nfp_prog, meta, 8);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3016
mem_xadd(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta, bool is64)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3023
off = ur_load_imm_any(nfp_prog, meta->insn.off, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3030
out = nfp_prog_current_offset(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3031
full_add = nfp_prog_current_offset(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3050
swreg max_imm = imm_a(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3052
wrp_immed(nfp_prog, max_imm, 0xffff);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3053
emit_alu(nfp_prog, reg_none(),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3055
emit_alu(nfp_prog, reg_none(),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3057
emit_br(nfp_prog, BR_BLO, full_add, meta->insn.off ? 2 : 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3066
emit_alu(nfp_prog, imma_a(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3068
emit_alu(nfp_prog, imma_b(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
307
nfp_prog->error = err;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3070
addra = imma_a(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3071
addrb = imma_b(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3076
swreg prev_alu = imm_a(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3078
wrp_immed(nfp_prog, prev_alu,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3082
wrp_reg_or_subpart(nfp_prog, prev_alu, reg_b(src_gpr), 2, 2);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3083
emit_cmd_indir(nfp_prog, CMD_TGT_ADD_IMM, CMD_MODE_40b_BA, 0,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3087
emit_br(nfp_prog, BR_UNC, out, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3090
if (!nfp_prog_confirm_current_offset(nfp_prog, full_add))
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3095
emit_cmd(nfp_prog, CMD_TGT_ADD, CMD_MODE_40b_BA, 0,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3099
wrp_mov(nfp_prog, reg_xfer(0), reg_a(src_gpr));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
31
for (pos = list_first_entry(&(nfp_prog)->insns, typeof(*pos), l), \
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3101
wrp_mov(nfp_prog, reg_xfer(1), reg_a(src_gpr + 1));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3104
if (!nfp_prog_confirm_current_offset(nfp_prog, out))
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3110
static int mem_atomic4(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3115
return mem_xadd(nfp_prog, meta, false);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3118
static int mem_atomic8(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
312
__emit_immed(nfp_prog,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3123
return mem_xadd(nfp_prog, meta, true);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3126
static int jump(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3128
emit_br(nfp_prog, BR_UNC, meta->insn.off, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3133
static int jeq_imm(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3143
tmp_reg = ur_load_imm_any(nfp_prog, imm & ~0U, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3144
emit_alu(nfp_prog, imm_a(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3146
or1 = imm_a(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3150
tmp_reg = ur_load_imm_any(nfp_prog, imm >> 32, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3151
emit_alu(nfp_prog, imm_b(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3153
or2 = imm_b(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3156
emit_alu(nfp_prog, reg_none(), or1, ALU_OP_OR, or2);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3157
emit_br(nfp_prog, BR_BEQ, insn->off, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3162
static int jeq32_imm(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3167
tmp_reg = ur_load_imm_any(nfp_prog, insn->imm, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3168
emit_alu(nfp_prog, reg_none(),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3170
emit_br(nfp_prog, BR_BEQ, insn->off, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3175
static int jset_imm(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3182
tmp_reg = ur_load_imm_any(nfp_prog, imm & ~0U, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3183
emit_alu(nfp_prog, imm_b(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3189
emit_alu(nfp_prog, reg_none(),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
319
__emit_shf(struct nfp_prog *nfp_prog, u16 dst, enum alu_dst_ab dst_ab,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3190
reg_a(dst_gpr + 1), ALU_OP_OR, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3192
emit_br(nfp_prog, BR_BNE, insn->off, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3197
static int jne_imm(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3206
emit_alu(nfp_prog, reg_none(), reg_none(), ALU_OP_NONE,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3209
emit_alu(nfp_prog, reg_none(), reg_a(insn->dst_reg * 2),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3211
emit_br(nfp_prog, BR_BNE, insn->off, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3215
tmp_reg = ur_load_imm_any(nfp_prog, imm & ~0U, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3216
emit_alu(nfp_prog, reg_none(),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3218
emit_br(nfp_prog, BR_BNE, insn->off, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3223
tmp_reg = ur_load_imm_any(nfp_prog, imm >> 32, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3224
emit_alu(nfp_prog, reg_none(),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3226
emit_br(nfp_prog, BR_BNE, insn->off, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3231
static int jeq_reg(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3235
emit_alu(nfp_prog, imm_a(nfp_prog), reg_a(insn->dst_reg * 2),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3238
emit_alu(nfp_prog, imm_b(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3241
emit_alu(nfp_prog, reg_none(), imm_a(nfp_prog), ALU_OP_OR,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3242
imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3244
emit_br(nfp_prog, BR_BEQ, insn->off, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3249
static int jset_reg(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3251
return wrp_test_reg(nfp_prog, meta, ALU_OP_AND, BR_BNE);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3254
static int jne_reg(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3256
return wrp_test_reg(nfp_prog, meta, ALU_OP_XOR, BR_BNE);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3260
bpf_to_bpf_call(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3265
stack_depth = round_up(nfp_prog->stack_frame_depth, STACK_FRAME_ALIGN);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
327
nfp_prog->error = -EFAULT;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3270
tmp_reg = ur_load_imm_any(nfp_prog, stack_depth,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3271
stack_imm(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3272
emit_alu(nfp_prog, stack_reg(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3273
stack_reg(nfp_prog), ALU_OP_ADD, tmp_reg);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3274
emit_csr_wr(nfp_prog, stack_reg(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3313
if (nfp_prog->subprog[meta->jmp_dst->subprog_idx].needs_reg_push) {
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3314
ret_tgt = nfp_prog_current_offset(nfp_prog) + 3;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3315
emit_br_relo(nfp_prog, BR_UNC, BR_OFF_RELO, 2,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3317
offset_br = nfp_prog_current_offset(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3318
wrp_immed_relo(nfp_prog, imm_b(nfp_prog), 0, RELO_IMMED_REL);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3320
ret_tgt = nfp_prog_current_offset(nfp_prog) + 2;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3321
emit_br(nfp_prog, BR_UNC, meta->insn.imm, 1);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3322
offset_br = nfp_prog_current_offset(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3324
wrp_immed_relo(nfp_prog, ret_reg(nfp_prog), ret_tgt, RELO_IMMED_REL);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3326
if (!nfp_prog_confirm_current_offset(nfp_prog, ret_tgt))
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3330
tmp_reg = ur_load_imm_any(nfp_prog, stack_depth,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3331
stack_imm(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3332
emit_alu(nfp_prog, stack_reg(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3333
stack_reg(nfp_prog), ALU_OP_SUB, tmp_reg);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3334
emit_csr_wr(nfp_prog, stack_reg(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3336
wrp_nops(nfp_prog, 3);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3339
meta->num_insns_after_br = nfp_prog_current_offset(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3345
static int helper_call(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3349
return adjust_head(nfp_prog, meta);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3351
return adjust_tail(nfp_prog, meta);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3355
return map_call_stack_common(nfp_prog, meta);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3357
return nfp_get_prandom_u32(nfp_prog, meta);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3359
return nfp_perf_event_output(nfp_prog, meta);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3366
static int call(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3369
return bpf_to_bpf_call(nfp_prog, meta);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3371
return helper_call(nfp_prog, meta);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3379
static int goto_out(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3381
emit_br_relo(nfp_prog, BR_UNC, BR_OFF_RELO, 0, RELO_BR_GO_OUT);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3387
nfp_subprog_epilogue(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3389
if (nfp_prog->subprog[meta->subprog_idx].needs_reg_push) {
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3395
emit_br_relo(nfp_prog, BR_UNC, BR_OFF_RELO, 1,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3398
wrp_mov(nfp_prog, ret_reg(nfp_prog), reg_lm(0, 0));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
34
&(nfp_prog)->insns != &pos->l && \
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3401
wrp_mov(nfp_prog, ret_reg(nfp_prog), reg_lm(0, 0));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3405
emit_rtn(nfp_prog, ret_reg(nfp_prog), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3411
static int jmp_exit(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3414
return goto_out(nfp_prog, meta);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3416
return nfp_subprog_epilogue(nfp_prog, meta);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
35
&(nfp_prog)->insns != &next->l && \
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3539
nfp_fixup_immed_relo(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3542
if (immed_get_value(nfp_prog->prog[br_idx + 1])) {
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3547
immed_set_value(&nfp_prog->prog[br_idx + 1], jmp_dst->off);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3552
static int nfp_fixup_branches(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3558
list_for_each_entry(meta, &nfp_prog->insns, l) {
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3569
if (list_is_last(&meta->l, &nfp_prog->insns))
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3570
br_idx = nfp_prog->last_bpf_off;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3582
if (!nfp_is_br(nfp_prog->prog[br_idx])) {
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3584
br_idx, meta->insn.code, nfp_prog->prog[br_idx]);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
359
nfp_prog_push(nfp_prog, insn);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3592
if (FIELD_GET(OP_RELO_TYPE, nfp_prog->prog[br_idx]) !=
drivers/net/ethernet/netronome/nfp/bpf/jit.c
36
&(nfp_prog)->insns != &next2->l; \
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3609
nfp_prog->subprog[jmp_dst->subprog_idx].needs_reg_push) {
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3610
err = nfp_fixup_immed_relo(nfp_prog, meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3616
if (FIELD_GET(OP_RELO_TYPE, nfp_prog->prog[br_idx]) !=
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3621
if (!nfp_is_br(nfp_prog->prog[idx]))
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3623
br_set_offset(&nfp_prog->prog[idx], jmp_dst->off);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
363
emit_shf(struct nfp_prog *nfp_prog, swreg dst,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3630
static void nfp_intro(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3632
wrp_immed(nfp_prog, plen_reg(nfp_prog), GENMASK(13, 0));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3633
emit_alu(nfp_prog, plen_reg(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3634
plen_reg(nfp_prog), ALU_OP_AND, pv_len(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3638
nfp_subprog_prologue(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3641
wrp_mov(nfp_prog, reg_lm(0, 0), ret_reg(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3645
nfp_start_subprog(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3647
unsigned int depth = nfp_prog->subprog[meta->subprog_idx].stack_depth;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3649
nfp_prog->stack_frame_depth = round_up(depth, 4);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3650
nfp_subprog_prologue(nfp_prog, meta);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3658
static void nfp_outro_tc_da(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3673
nfp_prog->tgt_abort = nfp_prog_current_offset(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3675
emit_br_relo(nfp_prog, BR_UNC, BR_OFF_RELO, 2, RELO_BR_NEXT_PKT);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3677
wrp_mov(nfp_prog, reg_a(0), NFP_BPF_ABI_FLAGS);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3678
emit_ld_field(nfp_prog, reg_a(0), 0xc, reg_imm(0x11), SHF_SC_L_SHF, 16);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3681
nfp_prog->tgt_out = nfp_prog_current_offset(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3684
emit_alu(nfp_prog, reg_none(), reg_imm(7), ALU_OP_SUB, reg_b(0));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3685
emit_br(nfp_prog, BR_BLO, nfp_prog->tgt_abort, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3686
wrp_mov(nfp_prog, reg_a(0), NFP_BPF_ABI_FLAGS);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3688
wrp_immed(nfp_prog, reg_b(2), 0x41221211);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3689
wrp_immed(nfp_prog, reg_b(3), 0x41001211);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3691
emit_shf(nfp_prog, reg_a(1),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3694
emit_alu(nfp_prog, reg_none(), reg_a(1), ALU_OP_OR, reg_imm(0));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3695
emit_shf(nfp_prog, reg_a(2),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3698
emit_alu(nfp_prog, reg_none(), reg_a(1), ALU_OP_OR, reg_imm(0));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3699
emit_shf(nfp_prog, reg_b(2),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3702
emit_br_relo(nfp_prog, BR_UNC, BR_OFF_RELO, 2, RELO_BR_NEXT_PKT);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3704
emit_shf(nfp_prog, reg_b(2),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3706
emit_ld_field(nfp_prog, reg_a(0), 0xc, reg_b(2), SHF_SC_L_SHF, 16);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3709
static void nfp_outro_xdp(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
371
nfp_prog->error = err;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3719
nfp_prog->tgt_abort = nfp_prog_current_offset(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3721
emit_br_relo(nfp_prog, BR_UNC, BR_OFF_RELO, 2, RELO_BR_NEXT_PKT);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3723
wrp_mov(nfp_prog, reg_a(0), NFP_BPF_ABI_FLAGS);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3724
emit_ld_field(nfp_prog, reg_a(0), 0xc, reg_imm(0x82), SHF_SC_L_SHF, 16);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3727
nfp_prog->tgt_out = nfp_prog_current_offset(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3730
emit_alu(nfp_prog, reg_none(), reg_imm(3), ALU_OP_SUB, reg_b(0));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3731
emit_br(nfp_prog, BR_BLO, nfp_prog->tgt_abort, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3733
wrp_immed(nfp_prog, reg_b(2), 0x44112282);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3735
emit_shf(nfp_prog, reg_a(1),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3738
emit_alu(nfp_prog, reg_none(), reg_a(1), ALU_OP_OR, reg_imm(0));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3739
emit_shf(nfp_prog, reg_b(2),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3742
emit_br_relo(nfp_prog, BR_UNC, BR_OFF_RELO, 2, RELO_BR_NEXT_PKT);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3744
wrp_mov(nfp_prog, reg_a(0), NFP_BPF_ABI_FLAGS);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3745
emit_ld_field(nfp_prog, reg_a(0), 0xc, reg_b(2), SHF_SC_L_SHF, 16);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3748
static bool nfp_prog_needs_callee_reg_save(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
375
__emit_shf(nfp_prog, reg.dst, reg.dst_ab, sc, shift,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3752
for (idx = 1; idx < nfp_prog->subprog_cnt; idx++)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3753
if (nfp_prog->subprog[idx].needs_reg_push)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3759
static void nfp_push_callee_registers(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3766
nfp_prog->tgt_call_push_regs = nfp_prog_current_offset(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3774
wrp_mov(nfp_prog, reg_lm(0, 1 + idx), reg_b(adj));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3778
emit_rtn(nfp_prog, imm_b(nfp_prog), 3);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3780
wrp_mov(nfp_prog, reg_lm(0, 1 + idx + 1), reg_b(adj + 1));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3784
static void nfp_pop_callee_registers(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3791
nfp_prog->tgt_call_pop_regs = nfp_prog_current_offset(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3799
wrp_mov(nfp_prog, reg_both(adj), reg_lm(0, 1 + idx));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3803
emit_rtn(nfp_prog, ret_reg(nfp_prog), 3);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3805
wrp_mov(nfp_prog, reg_both(adj + 1), reg_lm(0, 1 + idx + 1));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3809
static void nfp_outro(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
381
emit_shf_indir(struct nfp_prog *nfp_prog, swreg dst,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3811
switch (nfp_prog->type) {
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3813
nfp_outro_tc_da(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3816
nfp_outro_xdp(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3822
if (!nfp_prog_needs_callee_reg_save(nfp_prog))
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3825
nfp_push_callee_registers(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3826
nfp_pop_callee_registers(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3829
static int nfp_translate(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3835
depth = nfp_prog->subprog[0].stack_depth;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3836
nfp_prog->stack_frame_depth = round_up(depth, 4);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3838
nfp_intro(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3839
if (nfp_prog->error)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3840
return nfp_prog->error;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3842
list_for_each_entry(meta, &nfp_prog->insns, l) {
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3845
meta->off = nfp_prog_current_offset(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3848
nfp_start_subprog(nfp_prog, meta);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3849
if (nfp_prog->error)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3850
return nfp_prog->error;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3854
nfp_prog->n_translated++;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3858
if (nfp_meta_has_prev(nfp_prog, meta) &&
drivers/net/ethernet/netronome/nfp/bpf/jit.c
386
nfp_prog->error = -EFAULT;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3863
err = cb(nfp_prog, meta);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3866
if (nfp_prog->error)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3867
return nfp_prog->error;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3869
nfp_prog->n_translated++;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3872
nfp_prog->last_bpf_off = nfp_prog_current_offset(nfp_prog) - 1;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3874
nfp_outro(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3875
if (nfp_prog->error)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3876
return nfp_prog->error;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3878
wrp_nops(nfp_prog, NFP_USTORE_PREFETCH_WINDOW);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3879
if (nfp_prog->error)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3880
return nfp_prog->error;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3882
return nfp_fixup_branches(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3886
static void nfp_bpf_opt_reg_init(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3890
list_for_each_entry(meta, &nfp_prog->insns, l) {
drivers/net/ethernet/netronome/nfp/bpf/jit.c
390
emit_shf(nfp_prog, dst, lreg, op, rreg, sc, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3912
static void nfp_bpf_opt_neg_add_sub(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3916
list_for_each_entry(meta, &nfp_prog->insns, l) {
drivers/net/ethernet/netronome/nfp/bpf/jit.c
394
__emit_alu(struct nfp_prog *nfp_prog, u16 dst, enum alu_dst_ab dst_ab,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3956
static void nfp_bpf_opt_ld_mask(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3965
nfp_for_each_insn_walk2(nfp_prog, meta1, meta2) {
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3995
static void nfp_bpf_opt_ld_shift(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
3999
nfp_for_each_insn_walk3(nfp_prog, meta1, meta2, meta3) {
drivers/net/ethernet/netronome/nfp/bpf/jit.c
411
nfp_prog_push(nfp_prog, insn);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
415
emit_alu(struct nfp_prog *nfp_prog, swreg dst,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4184
static void nfp_bpf_opt_ldst_gather(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4193
nfp_for_each_insn_walk2(nfp_prog, meta1, meta2) {
drivers/net/ethernet/netronome/nfp/bpf/jit.c
42
nfp_meta_has_prev(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
423
nfp_prog->error = err;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
427
__emit_alu(nfp_prog, reg.dst, reg.dst_ab,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4274
static void nfp_bpf_opt_pkt_cache(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4283
list_for_each_entry(meta, &nfp_prog->insns, l) {
drivers/net/ethernet/netronome/nfp/bpf/jit.c
433
__emit_mul(struct nfp_prog *nfp_prog, enum alu_dst_ab dst_ab, u16 areg,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4372
list_for_each_entry(meta, &nfp_prog->insns, l) {
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4388
static int nfp_bpf_optimize(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4390
nfp_bpf_opt_reg_init(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4392
nfp_bpf_opt_neg_add_sub(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4393
nfp_bpf_opt_ld_mask(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4394
nfp_bpf_opt_ld_shift(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4395
nfp_bpf_opt_ldst_gather(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4396
nfp_bpf_opt_pkt_cache(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
44
return meta->l.prev != &nfp_prog->insns;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4401
static int nfp_bpf_replace_map_ptrs(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4408
nfp_for_each_insn_walk2(nfp_prog, meta1, meta2) {
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4451
static void nfp_bpf_prog_trim(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4455
prog = kvmalloc_array(nfp_prog->prog_len, sizeof(u64), GFP_KERNEL);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4459
nfp_prog->__prog_alloc_len = nfp_prog->prog_len * sizeof(u64);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4460
memcpy(prog, nfp_prog->prog, nfp_prog->__prog_alloc_len);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4461
kvfree(nfp_prog->prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4462
nfp_prog->prog = prog;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4465
int nfp_bpf_jit(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4469
ret = nfp_bpf_replace_map_ptrs(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4473
ret = nfp_bpf_optimize(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4477
ret = nfp_translate(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4480
ret, nfp_prog->n_translated);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4484
nfp_bpf_prog_trim(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4489
void nfp_bpf_jit_prepare(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4494
list_for_each_entry(meta, &nfp_prog->insns, l) {
drivers/net/ethernet/netronome/nfp/bpf/jit.c
450
nfp_prog_push(nfp_prog, insn);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4517
dst_meta = nfp_bpf_goto_meta(nfp_prog, meta, dst_idx);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4532
void *nfp_bpf_relo_for_vnic(struct nfp_prog *nfp_prog, struct nfp_bpf_vnic *bv)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4538
prog = kmemdup_array(nfp_prog->prog, nfp_prog->prog_len, sizeof(u64),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
454
emit_mul(struct nfp_prog *nfp_prog, swreg lreg, enum mul_type type,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4543
for (i = 0; i < nfp_prog->prog_len; i++) {
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4557
nfp_prog->tgt_out + bv->start_off);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4561
nfp_prog->tgt_abort + bv->start_off);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4564
if (!nfp_prog->tgt_call_push_regs) {
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4569
off = nfp_prog->tgt_call_push_regs + bv->start_off;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4573
if (!nfp_prog->tgt_call_pop_regs) {
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4578
off = nfp_prog->tgt_call_pop_regs + bv->start_off;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4589
val = nfp_prog->bpf->helpers.map_lookup;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4592
val = nfp_prog->bpf->helpers.map_update;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4595
val = nfp_prog->bpf->helpers.map_delete;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4598
val = nfp_prog->bpf->helpers.perf_event_output;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
4616
err = nfp_bpf_ustore_calc(prog, nfp_prog->prog_len);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
462
nfp_prog->error = -EINVAL;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
47
static void nfp_prog_push(struct nfp_prog *nfp_prog, u64 insn)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
478
nfp_prog->error = err;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
482
__emit_mul(nfp_prog, reg.dst_ab, areg, type, step, reg.breg, reg.swap,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
487
__emit_ld_field(struct nfp_prog *nfp_prog, enum shf_sc sc,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
49
if (nfp_prog->__prog_alloc_len / sizeof(u64) == nfp_prog->prog_len) {
drivers/net/ethernet/netronome/nfp/bpf/jit.c
507
nfp_prog_push(nfp_prog, insn);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
51
nfp_prog->prog_len);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
511
emit_ld_field_any(struct nfp_prog *nfp_prog, swreg dst, u8 bmask, swreg src,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
52
nfp_prog->error = -ENOSPC;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
520
nfp_prog->error = err;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
524
__emit_ld_field(nfp_prog, sc, reg.areg, bmask, reg.breg, shift,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
530
emit_ld_field(struct nfp_prog *nfp_prog, swreg dst, u8 bmask, swreg src,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
533
emit_ld_field_any(nfp_prog, dst, bmask, src, sc, shift, false);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
537
__emit_lcsr(struct nfp_prog *nfp_prog, u16 areg, u16 breg, bool wr, u16 addr,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
550
nfp_prog_push(nfp_prog, insn);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
553
static void emit_csr_wr(struct nfp_prog *nfp_prog, swreg src, u16 addr)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
56
nfp_prog->prog[nfp_prog->prog_len] = insn;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
57
nfp_prog->prog_len++;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
570
nfp_prog->error = err;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
574
__emit_lcsr(nfp_prog, reg.areg, reg.breg, true, addr,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
579
static void __emit_csr_rd(struct nfp_prog *nfp_prog, u16 addr)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
581
__emit_lcsr(nfp_prog, 0, 0, false, addr, false, false);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
584
static void emit_nop(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
586
__emit_immed(nfp_prog, UR_REG_IMM, UR_REG_IMM, 0, 0, 0, 0, 0, 0, 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
60
static unsigned int nfp_prog_current_offset(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
608
static void wrp_immed(struct nfp_prog *nfp_prog, swreg dst, u32 imm)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
614
emit_immed(nfp_prog, dst, val, IMMED_WIDTH_ALL, false, shift);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
616
emit_immed(nfp_prog, dst, val, IMMED_WIDTH_ALL, true, shift);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
618
emit_immed(nfp_prog, dst, imm & 0xffff, IMMED_WIDTH_ALL,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
62
return nfp_prog->prog_len;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
620
emit_immed(nfp_prog, dst, imm >> 16, IMMED_WIDTH_WORD,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
626
wrp_zext(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta, u8 dst)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
629
wrp_immed(nfp_prog, reg_both(dst + 1), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
633
wrp_immed_relo(struct nfp_prog *nfp_prog, swreg dst, u32 imm,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
638
nfp_prog->error = -EFAULT;
drivers/net/ethernet/netronome/nfp/bpf/jit.c
641
emit_immed(nfp_prog, dst, imm, IMMED_WIDTH_ALL, false, IMMED_SHIFT_0B);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
643
nfp_prog->prog[nfp_prog->prog_len - 1] |=
drivers/net/ethernet/netronome/nfp/bpf/jit.c
651
static swreg ur_load_imm_any(struct nfp_prog *nfp_prog, u32 imm, swreg tmp_reg)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
656
wrp_immed(nfp_prog, tmp_reg, imm);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
66
nfp_prog_confirm_current_offset(struct nfp_prog *nfp_prog, unsigned int off)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
664
static swreg re_load_imm_any(struct nfp_prog *nfp_prog, u32 imm, swreg tmp_reg)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
669
wrp_immed(nfp_prog, tmp_reg, imm);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
673
static void wrp_nops(struct nfp_prog *nfp_prog, unsigned int count)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
676
emit_nop(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
679
static void wrp_mov(struct nfp_prog *nfp_prog, swreg dst, swreg src)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
681
emit_alu(nfp_prog, dst, reg_none(), ALU_OP_NONE, src);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
684
static void wrp_reg_mov(struct nfp_prog *nfp_prog, u16 dst, u16 src)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
686
wrp_mov(nfp_prog, reg_both(dst), reg_b(src));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
693
wrp_reg_subpart(struct nfp_prog *nfp_prog, swreg dst, swreg src, u8 field_len,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
699
emit_ld_field_any(nfp_prog, dst, mask, src, sc, offset * 8, true);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
706
wrp_reg_or_subpart(struct nfp_prog *nfp_prog, swreg dst, swreg src,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
712
emit_ld_field(nfp_prog, dst, mask, src, sc, 32 - offset * 8);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
716
addr40_offset(struct nfp_prog *nfp_prog, u8 src_gpr, swreg offset,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
72
if (nfp_prog->error)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
725
emit_alu(nfp_prog, imm_a(nfp_prog), reg_a(src_gpr), ALU_OP_ADD, offset);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
726
emit_alu(nfp_prog, imm_b(nfp_prog), reg_b(src_gpr + 1), ALU_OP_ADD_C,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
728
*rega = imm_a(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
729
*regb = imm_b(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
733
static int nfp_cpp_memcpy(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)
drivers/net/ethernet/netronome/nfp/bpf/jit.c
74
return !WARN_ON_ONCE(nfp_prog_current_offset(nfp_prog) != off);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
742
off = re_load_imm_any(nfp_prog, meta->insn.off, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
748
addr40_offset(nfp_prog, meta->insn.src_reg * 2, off, &src_base,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
753
wrp_immed(nfp_prog, reg_none(),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
757
emit_cmd_any(nfp_prog, CMD_TGT_READ32_SWAP,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
763
wrp_mov(nfp_prog, reg_xfer(i), reg_xfer(i));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
765
off = re_load_imm_any(nfp_prog, meta->paired_st->off, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
769
emit_cmd(nfp_prog, CMD_TGT_WRITE8_SWAP, CMD_MODE_32b, 0,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
774
emit_cmd(nfp_prog, CMD_TGT_WRITE32_SWAP, CMD_MODE_32b, 0,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
779
wrp_immed(nfp_prog, reg_none(),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
781
emit_cmd_indir(nfp_prog, CMD_TGT_WRITE8_SWAP, CMD_MODE_32b, 0,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
786
wrp_immed(nfp_prog, reg_none(),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
788
emit_cmd_indir(nfp_prog, CMD_TGT_WRITE32_SWAP, CMD_MODE_32b, 0,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
79
__emit_cmd(struct nfp_prog *nfp_prog, enum cmd_tgt_map op,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
795
emit_cmd(nfp_prog, CMD_TGT_WRITE32_SWAP, CMD_MODE_32b, 0,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
799
off = re_load_imm_any(nfp_prog, meta->paired_st->off + 32,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
800
imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
801
emit_cmd(nfp_prog, CMD_TGT_WRITE8_SWAP, CMD_MODE_32b, 8,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
810
wrp_immed(nfp_prog, reg_none(),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
812
emit_cmd_indir(nfp_prog, CMD_TGT_WRITE32_SWAP, CMD_MODE_32b, 0,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
816
off = re_load_imm_any(nfp_prog, new_off, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
817
emit_cmd(nfp_prog, CMD_TGT_WRITE8_SWAP, CMD_MODE_32b,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
841
wrp_reg_subpart(nfp_prog, reg_both(meta->insn.dst_reg * 2),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
846
wrp_reg_subpart(nfp_prog, reg_both(meta->insn.dst_reg * 2),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
850
wrp_mov(nfp_prog, reg_both(meta->insn.dst_reg * 2),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
854
wrp_mov(nfp_prog, reg_both(meta->insn.dst_reg * 2),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
856
wrp_mov(nfp_prog, reg_both(meta->insn.dst_reg * 2 + 1),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
862
wrp_immed(nfp_prog, reg_both(meta->insn.dst_reg * 2 + 1), 0);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
868
data_ld(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta, swreg offset,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
880
emit_cmd(nfp_prog, CMD_TGT_READ8, CMD_MODE_32b, 0,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
881
pptr_reg(nfp_prog), offset, sz - 1, CMD_CTX_SWAP);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
885
emit_shf(nfp_prog, reg_both(dst_gpr), reg_none(), SHF_OP_NONE,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
889
wrp_mov(nfp_prog, reg_both(dst_gpr + i), reg_xfer(i));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
892
wrp_zext(nfp_prog, meta, dst_gpr);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
898
data_ld_host_order(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
911
emit_cmd(nfp_prog, CMD_TGT_READ32_SWAP, mode, 0,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
916
emit_ld_field_any(nfp_prog, reg_both(dst_gpr), mask,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
920
wrp_mov(nfp_prog, reg_both(dst_gpr + i), reg_xfer(i));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
923
wrp_zext(nfp_prog, meta, dst_gpr);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
929
data_ld_host_order_addr32(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
932
return data_ld_host_order(nfp_prog, meta, dst_gpr, reg_a(src_gpr),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
937
data_ld_host_order_addr40(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
942
addr40_offset(nfp_prog, src_gpr, offset, &rega, &regb);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
944
return data_ld_host_order(nfp_prog, meta, dst_gpr, rega, regb,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
949
construct_data_ind_ld(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
955
tmp_reg = ur_load_imm_any(nfp_prog, offset, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
956
emit_alu(nfp_prog, imm_both(nfp_prog), reg_a(src), ALU_OP_ADD, tmp_reg);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
959
emit_alu(nfp_prog, imm_a(nfp_prog),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
96
nfp_prog_push(nfp_prog, insn);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
960
imm_a(nfp_prog), ALU_OP_ADD, reg_imm(size));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
961
emit_alu(nfp_prog, reg_none(),
drivers/net/ethernet/netronome/nfp/bpf/jit.c
962
plen_reg(nfp_prog), ALU_OP_SUB, imm_a(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
963
emit_br_relo(nfp_prog, BR_BLO, BR_OFF_RELO, 0, RELO_BR_GO_ABORT);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
966
return data_ld(nfp_prog, meta, imm_b(nfp_prog), 0, size);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
970
construct_data_ld(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
976
tmp_reg = ur_load_imm_any(nfp_prog, offset + size, imm_a(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
977
emit_alu(nfp_prog, reg_none(), plen_reg(nfp_prog), ALU_OP_SUB, tmp_reg);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
978
emit_br_relo(nfp_prog, BR_BLO, BR_OFF_RELO, 0, RELO_BR_GO_ABORT);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
981
tmp_reg = re_load_imm_any(nfp_prog, offset, imm_b(nfp_prog));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
982
return data_ld(nfp_prog, meta, tmp_reg, 0, size);
drivers/net/ethernet/netronome/nfp/bpf/jit.c
986
data_stx_host_order(struct nfp_prog *nfp_prog, u8 dst_gpr, swreg offset,
drivers/net/ethernet/netronome/nfp/bpf/jit.c
992
wrp_mov(nfp_prog, reg_xfer(i), reg_a(src_gpr + i));
drivers/net/ethernet/netronome/nfp/bpf/jit.c
994
emit_cmd(nfp_prog, CMD_TGT_WRITE8_SWAP, CMD_MODE_32b, 0,
drivers/net/ethernet/netronome/nfp/bpf/main.h
233
struct nfp_prog;
drivers/net/ethernet/netronome/nfp/bpf/main.h
235
typedef int (*instr_cb_t)(struct nfp_prog *, struct nfp_insn_meta *);
drivers/net/ethernet/netronome/nfp/bpf/main.h
237
#define nfp_prog_first_meta(nfp_prog) \
drivers/net/ethernet/netronome/nfp/bpf/main.h
238
list_first_entry(&(nfp_prog)->insns, struct nfp_insn_meta, l)
drivers/net/ethernet/netronome/nfp/bpf/main.h
239
#define nfp_prog_last_meta(nfp_prog) \
drivers/net/ethernet/netronome/nfp/bpf/main.h
240
list_last_entry(&(nfp_prog)->insns, struct nfp_insn_meta, l)
drivers/net/ethernet/netronome/nfp/bpf/main.h
560
void nfp_bpf_jit_prepare(struct nfp_prog *nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/main.h
561
int nfp_bpf_jit(struct nfp_prog *prog);
drivers/net/ethernet/netronome/nfp/bpf/main.h
586
nfp_bpf_goto_meta(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/main.h
589
void *nfp_bpf_relo_for_vnic(struct nfp_prog *nfp_prog, struct nfp_bpf_vnic *bv);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
100
bpf_map_put(nfp_prog->map_records[i]->ptr);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
101
kfree(nfp_prog->map_records[i]);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
105
kfree(nfp_prog->map_records);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
106
nfp_prog->map_records = NULL;
drivers/net/ethernet/netronome/nfp/bpf/offload.c
107
nfp_prog->map_records_cnt = 0;
drivers/net/ethernet/netronome/nfp/bpf/offload.c
111
nfp_map_ptrs_record(struct nfp_app_bpf *bpf, struct nfp_prog *nfp_prog,
drivers/net/ethernet/netronome/nfp/bpf/offload.c
126
nfp_prog->map_records = kmalloc_objs(nfp_prog->map_records[0], cnt);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
127
if (!nfp_prog->map_records) {
drivers/net/ethernet/netronome/nfp/bpf/offload.c
134
err = nfp_map_ptr_record(bpf, nfp_prog,
drivers/net/ethernet/netronome/nfp/bpf/offload.c
137
nfp_map_ptrs_forget(bpf, nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
141
WARN_ON(cnt != nfp_prog->map_records_cnt);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
149
nfp_prog_prepare(struct nfp_prog *nfp_prog, const struct bpf_insn *prog,
drivers/net/ethernet/netronome/nfp/bpf/offload.c
167
list_add_tail(&meta->l, &nfp_prog->insns);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
169
nfp_prog->n_insns = cnt;
drivers/net/ethernet/netronome/nfp/bpf/offload.c
171
nfp_bpf_jit_prepare(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
176
static void nfp_prog_free(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/offload.c
180
kfree(nfp_prog->subprog);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
182
list_for_each_entry_safe(meta, tmp, &nfp_prog->insns, l) {
drivers/net/ethernet/netronome/nfp/bpf/offload.c
186
kfree(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
191
struct nfp_prog *nfp_prog;
drivers/net/ethernet/netronome/nfp/bpf/offload.c
194
nfp_prog = kzalloc_obj(*nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
195
if (!nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/offload.c
197
prog->aux->offload->dev_priv = nfp_prog;
drivers/net/ethernet/netronome/nfp/bpf/offload.c
199
INIT_LIST_HEAD(&nfp_prog->insns);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
200
nfp_prog->type = prog->type;
drivers/net/ethernet/netronome/nfp/bpf/offload.c
201
nfp_prog->bpf = bpf_offload_dev_priv(prog->aux->offload->offdev);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
203
ret = nfp_prog_prepare(nfp_prog, prog->insnsi, prog->len);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
207
nfp_prog->verifier_meta = nfp_prog_first_meta(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
212
nfp_prog_free(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
220
struct nfp_prog *nfp_prog = prog->aux->offload->dev_priv;
drivers/net/ethernet/netronome/nfp/bpf/offload.c
229
nfp_prog->__prog_alloc_len = max_instr * sizeof(u64);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
231
nfp_prog->prog = kvmalloc(nfp_prog->__prog_alloc_len, GFP_KERNEL);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
232
if (!nfp_prog->prog)
drivers/net/ethernet/netronome/nfp/bpf/offload.c
235
err = nfp_bpf_jit(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
239
prog->aux->offload->jited_len = nfp_prog->prog_len * sizeof(u64);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
240
prog->aux->offload->jited_image = nfp_prog->prog;
drivers/net/ethernet/netronome/nfp/bpf/offload.c
242
return nfp_map_ptrs_record(nfp_prog->bpf, nfp_prog, prog);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
247
struct nfp_prog *nfp_prog = prog->aux->offload->dev_priv;
drivers/net/ethernet/netronome/nfp/bpf/offload.c
249
kvfree(nfp_prog->prog);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
250
nfp_map_ptrs_forget(nfp_prog->bpf, nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
251
nfp_prog_free(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
31
nfp_map_ptr_record(struct nfp_app_bpf *bpf, struct nfp_prog *nfp_prog,
drivers/net/ethernet/netronome/nfp/bpf/offload.c
41
nfp_prog->map_records[nfp_prog->map_records_cnt++] = record;
drivers/net/ethernet/netronome/nfp/bpf/offload.c
498
struct nfp_prog *nfp_prog = prog->aux->offload->dev_priv;
drivers/net/ethernet/netronome/nfp/bpf/offload.c
510
if (nfp_prog->stack_size > max_stack) {
drivers/net/ethernet/netronome/nfp/bpf/offload.c
516
if (nfp_prog->prog_len > max_prog_len) {
drivers/net/ethernet/netronome/nfp/bpf/offload.c
521
img = nfp_bpf_relo_for_vnic(nfp_prog, nn->app_priv);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
526
nfp_prog->prog_len * sizeof(u64),
drivers/net/ethernet/netronome/nfp/bpf/offload.c
533
nn_writew(nn, NFP_NET_CFG_BPF_SIZE, nfp_prog->prog_len);
drivers/net/ethernet/netronome/nfp/bpf/offload.c
542
dma_unmap_single(nn->dp.dev, dma_addr, nfp_prog->prog_len * sizeof(u64),
drivers/net/ethernet/netronome/nfp/bpf/offload.c
66
nfp_prog->map_records[nfp_prog->map_records_cnt++] = record;
drivers/net/ethernet/netronome/nfp/bpf/offload.c
78
nfp_map_ptrs_forget(struct nfp_app_bpf *bpf, struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/offload.c
83
for (i = 0; i < nfp_prog->map_records_cnt; i++) {
drivers/net/ethernet/netronome/nfp/bpf/offload.c
84
if (--nfp_prog->map_records[i]->count) {
drivers/net/ethernet/netronome/nfp/bpf/offload.c
85
nfp_prog->map_records[i] = NULL;
drivers/net/ethernet/netronome/nfp/bpf/offload.c
90
&nfp_prog->map_records[i]->l,
drivers/net/ethernet/netronome/nfp/bpf/offload.c
98
for (i = 0; i < nfp_prog->map_records_cnt; i++)
drivers/net/ethernet/netronome/nfp/bpf/offload.c
99
if (nfp_prog->map_records[i]) {
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
170
nfp_bpf_check_helper_call(struct nfp_prog *nfp_prog,
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
177
struct nfp_app_bpf *bpf = nfp_prog->bpf;
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
191
nfp_record_adjust_head(bpf, nfp_prog, meta, reg2);
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
20
nfp_bpf_goto_meta(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
28
if (min(forward, backward) > nfp_prog->n_insns - insn_idx - 1) {
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
284
dev_warn_once(&nfp_prog->bpf->app->pf->pdev->dev,
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
29
backward = nfp_prog->n_insns - insn_idx - 1;
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
30
meta = nfp_prog_last_meta(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
311
nfp_bpf_check_exit(struct nfp_prog *nfp_prog,
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
317
if (nfp_prog->type == BPF_PROG_TYPE_XDP)
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
330
if (nfp_prog->type == BPF_PROG_TYPE_SCHED_CLS &&
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
34
meta = nfp_prog_first_meta(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
343
nfp_bpf_check_stack_access(struct nfp_prog *nfp_prog,
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
451
nfp_bpf_check_ptr(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
466
err = nfp_bpf_check_stack_access(nfp_prog, meta, reg, env);
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
48
nfp_record_adjust_head(struct nfp_app_bpf *bpf, struct nfp_prog *nfp_prog,
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
502
nfp_bpf_check_store(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
508
if (nfp_prog->type == BPF_PROG_TYPE_XDP) {
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
512
if (nfp_prog->bpf->queue_select)
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
522
return nfp_bpf_check_ptr(nfp_prog, meta, env, meta->insn.dst_reg);
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
526
nfp_bpf_check_atomic(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
552
return nfp_bpf_check_ptr(nfp_prog, meta, env, meta->insn.dst_reg);
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
556
nfp_bpf_check_alu(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
634
struct nfp_prog *nfp_prog = env->prog->aux->offload->dev_priv;
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
635
struct nfp_insn_meta *meta = nfp_prog->verifier_meta;
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
637
meta = nfp_bpf_goto_meta(nfp_prog, meta, insn_idx);
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
638
nfp_prog->verifier_meta = meta;
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
653
return nfp_bpf_check_helper_call(nfp_prog, env, meta);
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
655
return nfp_bpf_check_exit(nfp_prog, env);
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
658
return nfp_bpf_check_ptr(nfp_prog, meta, env,
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
661
return nfp_bpf_check_store(nfp_prog, meta, env);
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
664
return nfp_bpf_check_atomic(nfp_prog, meta, env);
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
667
return nfp_bpf_check_alu(nfp_prog, meta, env);
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
674
struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
679
list_for_each_entry(meta, &nfp_prog->insns, l) {
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
686
nfp_prog->subprog[index].needs_reg_push = 1;
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
689
if (index + 1 != nfp_prog->subprog_cnt) {
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
69
if (nfp_prog->adjust_head_location) {
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
691
index + 1, nfp_prog->subprog_cnt);
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
698
static unsigned int nfp_bpf_get_stack_usage(struct nfp_prog *nfp_prog)
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
700
struct nfp_insn_meta *meta = nfp_prog_first_meta(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
71
if (nfp_prog->adjust_head_location != meta->n)
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
714
frame_depths[frame] = nfp_prog->subprog[idx].stack_depth;
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
720
for (; meta != nfp_prog_last_meta(nfp_prog) && meta->subprog_idx == idx;
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
732
meta = nfp_bpf_goto_meta(nfp_prog, meta,
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
752
static void nfp_bpf_insn_flag_zext(struct nfp_prog *nfp_prog,
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
757
list_for_each_entry(meta, &nfp_prog->insns, l) {
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
766
struct nfp_prog *nfp_prog;
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
771
nfp_prog = env->prog->aux->offload->dev_priv;
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
772
nfp_prog->subprog_cnt = env->subprog_cnt;
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
773
nfp_prog->subprog = kzalloc_objs(nfp_prog->subprog[0],
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
774
nfp_prog->subprog_cnt);
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
775
if (!nfp_prog->subprog)
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
778
nfp_assign_subprog_idx_and_regs(env, nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
781
for (i = 0; i < nfp_prog->subprog_cnt; i++) {
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
782
nfp_prog->subprog[i].stack_depth = info[i].stack_depth;
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
788
nfp_prog->subprog[i].stack_depth += REG_WIDTH;
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
790
if (nfp_prog->subprog[i].needs_reg_push)
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
791
nfp_prog->subprog[i].stack_depth += BPF_REG_SIZE * 4;
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
796
nfp_prog->stack_size = nfp_bpf_get_stack_usage(nfp_prog);
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
797
if (nfp_prog->stack_size > max_stack) {
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
799
nfp_prog->stack_size, max_stack);
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
80
nfp_prog->adjust_head_location = location;
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
803
nfp_bpf_insn_flag_zext(nfp_prog, env->insn_aux_data);
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
810
struct nfp_prog *nfp_prog = env->prog->aux->offload->dev_priv;
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
812
struct nfp_insn_meta *meta = nfp_prog->verifier_meta;
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
814
meta = nfp_bpf_goto_meta(nfp_prog, meta, aux_data[off].orig_idx);
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
815
nfp_prog->verifier_meta = meta;
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
843
struct nfp_prog *nfp_prog = env->prog->aux->offload->dev_priv;
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
845
struct nfp_insn_meta *meta = nfp_prog->verifier_meta;
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
848
meta = nfp_bpf_goto_meta(nfp_prog, meta, aux_data[off].orig_idx);
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
851
if (WARN_ON_ONCE(&meta->l == &nfp_prog->insns))