reg_both
reg_both |= mask;
reg_both &= ~mask;
reg_both &= ~mask;
writel(reg_both, g->base + GPIO_INT_BOTH_EDGE);
u32 reg_both, reg_level, reg_type;
reg_both = readl(g->base + GPIO_INT_BOTH_EDGE);
wrp_mov(nfp_prog, reg_both(dst),
emit_ld_field_any(nfp_prog, reg_both(dst), mask, reg, sc, shf, new_gpr);
wrp_immed(nfp_prog, reg_both(dst), 0);
wrp_immed(nfp_prog, reg_both(dst), ~0U);
emit_alu(nfp_prog, reg_both(dst), reg_none(),
emit_alu(nfp_prog, reg_both(dst), reg_a(dst), alu_op, tmp_reg);
emit_alu(nfp_prog, reg_both(dst), reg_a(dst), alu_op, reg_b(src));
emit_alu(nfp_prog, reg_both(dst + 1),
emit_alu(nfp_prog, reg_both(dst), reg_a(dst), alu_op, reg_b(src));
emit_ld_field(nfp_prog, reg_both(gpr_out), 0xf, reg_in,
emit_ld_field(nfp_prog, reg_both(gpr_out), 0x5, reg_a(gpr_out),
dst_hi = reg_both(dst_reg * 2 + 1);
dst_lo = reg_both(dst_reg * 2);
swreg dst_both = reg_both(dst), dst_a = reg_a(dst), dst_b = reg_a(dst);
wrp_immed(nfp_prog, reg_both(0), 0);
wrp_immed(nfp_prog, reg_both(1), 0);
wrp_immed(nfp_prog, reg_both(0), 0);
wrp_immed(nfp_prog, reg_both(1), 0);
wrp_immed(nfp_prog, reg_both(0), -22);
wrp_immed(nfp_prog, reg_both(1), ~0);
wrp_immed(nfp_prog, reg_both(0), 0);
wrp_immed(nfp_prog, reg_both(1), 0);
wrp_immed(nfp_prog, reg_both(0), -22);
wrp_immed(nfp_prog, reg_both(1), ~0);
emit_immed(nfp_prog, reg_both(0), 0,
emit_immed(nfp_prog, reg_both(1), 0,
emit_alu(nfp_prog, reg_both(dst), stack_reg(nfp_prog),
wrp_immed(nfp_prog, reg_both(dst + 1), 0);
wrp_immed(nfp_prog, reg_both(meta->insn.dst_reg * 2), imm & ~0U);
wrp_immed(nfp_prog, reg_both(meta->insn.dst_reg * 2 + 1), imm >> 32);
emit_alu(nfp_prog, reg_both(insn->dst_reg * 2),
emit_alu(nfp_prog, reg_both(insn->dst_reg * 2 + 1),
emit_alu(nfp_prog, reg_both(insn->dst_reg * 2),
emit_alu(nfp_prog, reg_both(insn->dst_reg * 2 + 1),
emit_alu(nfp_prog, reg_both(insn->dst_reg * 2), reg_imm(0),
emit_alu(nfp_prog, reg_both(insn->dst_reg * 2 + 1), reg_imm(0),
emit_shf(nfp_prog, reg_both(dst + 1), reg_a(dst + 1),
emit_shf(nfp_prog, reg_both(dst), reg_none(), SHF_OP_NONE,
wrp_immed(nfp_prog, reg_both(dst), 0);
emit_shf(nfp_prog, reg_both(dst + 1), reg_none(), SHF_OP_NONE,
wrp_immed(nfp_prog, reg_both(dst), 0);
emit_shf_indir(nfp_prog, reg_both(dst + 1), reg_a(dst + 1), SHF_OP_NONE,
emit_shf_indir(nfp_prog, reg_both(dst), reg_none(), SHF_OP_NONE,
emit_shf_indir(nfp_prog, reg_both(dst + 1), reg_none(), SHF_OP_NONE,
wrp_immed(nfp_prog, reg_both(dst), 0);
emit_shf(nfp_prog, reg_both(dst), reg_a(dst + 1), SHF_OP_NONE,
emit_shf(nfp_prog, reg_both(dst + 1), reg_none(), SHF_OP_NONE,
wrp_immed(nfp_prog, reg_both(dst + 1), 0);
emit_shf(nfp_prog, reg_both(dst), reg_none(), SHF_OP_NONE,
wrp_immed(nfp_prog, reg_both(dst + 1), 0);
emit_shf_indir(nfp_prog, reg_both(dst + 1), reg_none(), SHF_OP_NONE,
emit_shf_indir(nfp_prog, reg_both(dst), reg_a(dst + 1), SHF_OP_NONE,
emit_shf_indir(nfp_prog, reg_both(dst), reg_none(), SHF_OP_NONE,
wrp_immed(nfp_prog, reg_both(dst + 1), 0);
emit_shf(nfp_prog, reg_both(dst), reg_a(dst + 1), SHF_OP_NONE,
emit_shf(nfp_prog, reg_both(dst + 1), reg_none(), SHF_OP_ASHR,
emit_shf(nfp_prog, reg_both(dst + 1), reg_none(), SHF_OP_ASHR,
emit_shf(nfp_prog, reg_both(dst), reg_none(), SHF_OP_ASHR,
emit_shf(nfp_prog, reg_both(dst + 1), reg_none(), SHF_OP_ASHR,
emit_shf_indir(nfp_prog, reg_both(dst + 1), reg_none(), SHF_OP_ASHR,
emit_shf_indir(nfp_prog, reg_both(dst), reg_none(), SHF_OP_ASHR,
emit_shf(nfp_prog, reg_both(dst + 1), reg_none(), SHF_OP_ASHR,
wrp_immed(nfp_prog, reg_both(insn->dst_reg * 2 + 1), 0);
wrp_immed(nfp_prog, reg_both(insn->dst_reg * 2), insn->imm);
wrp_immed(nfp_prog, reg_both(insn->dst_reg * 2 + 1), 0);
emit_alu(nfp_prog, reg_both(dst), reg_imm(0), ALU_OP_SUB, reg_b(dst));
emit_shf(nfp_prog, reg_both(dst), reg_none(), SHF_OP_ASHR,
emit_shf_indir(nfp_prog, reg_both(dst), reg_none(), SHF_OP_ASHR,
emit_shf(nfp_prog, reg_both(dst), reg_none(), SHF_OP_NONE,
emit_shf_indir(nfp_prog, reg_both(dst), reg_none(), SHF_OP_NONE,
emit_shf(nfp_prog, reg_both(dst), reg_none(), SHF_OP_NONE,
emit_ld_field(nfp_prog, reg_both(gpr), 0x9, reg_b(gpr),
emit_ld_field(nfp_prog, reg_both(gpr), 0xe, reg_a(gpr),
wrp_immed(nfp_prog, reg_both(gpr + 1), 0);
wrp_immed(nfp_prog, reg_both(gpr + 1), 0);
wrp_immed(nfp_prog, reg_both(dst), imm_lo);
wrp_mov(nfp_prog, reg_both(dst + 1), reg_a(dst));
wrp_immed(nfp_prog, reg_both(dst + 1), imm_hi);
swreg dst = reg_both(meta->insn.dst_reg * 2);
wrp_immed(nfp_prog, reg_both(meta->insn.dst_reg * 2 + 1), 0);
swreg dst = reg_both(meta->insn.dst_reg * 2);
wrp_immed(nfp_prog, reg_both(meta->insn.dst_reg * 2 + 1), 0);
dst_hi = reg_both(dst_gpr + 1);
dst_lo = reg_both(dst_gpr);
dst_hi = reg_both(dst_gpr + 1);
dst_lo = reg_both(dst_gpr);
wrp_mov(nfp_prog, reg_both(adj), reg_lm(0, 1 + idx));
wrp_mov(nfp_prog, reg_both(adj + 1), reg_lm(0, 1 + idx + 1));
wrp_immed(nfp_prog, reg_both(dst + 1), 0);
wrp_mov(nfp_prog, reg_both(dst), reg_b(src));
wrp_reg_subpart(nfp_prog, reg_both(meta->insn.dst_reg * 2),
wrp_reg_subpart(nfp_prog, reg_both(meta->insn.dst_reg * 2),
wrp_mov(nfp_prog, reg_both(meta->insn.dst_reg * 2),
wrp_mov(nfp_prog, reg_both(meta->insn.dst_reg * 2),
wrp_mov(nfp_prog, reg_both(meta->insn.dst_reg * 2 + 1),
wrp_immed(nfp_prog, reg_both(meta->insn.dst_reg * 2 + 1), 0);
emit_shf(nfp_prog, reg_both(dst_gpr), reg_none(), SHF_OP_NONE,
wrp_mov(nfp_prog, reg_both(dst_gpr + i), reg_xfer(i));
emit_ld_field_any(nfp_prog, reg_both(dst_gpr), mask,
wrp_mov(nfp_prog, reg_both(dst_gpr + i), reg_xfer(i));
#define imm_both(np) reg_both(STATIC_REG_IMM)