Lines Matching refs:src_reg
202 static u8 add_2reg(u8 byte, u32 dst_reg, u32 src_reg) in add_2reg() argument
204 return byte + reg2hex[dst_reg] + (reg2hex[src_reg] << 3); in add_2reg()
649 static void emit_mov_reg(u8 **pprog, bool is64, u32 dst_reg, u32 src_reg) in emit_mov_reg() argument
655 EMIT_mov(dst_reg, src_reg); in emit_mov_reg()
658 if (is_ereg(dst_reg) || is_ereg(src_reg)) in emit_mov_reg()
659 EMIT1(add_2mod(0x40, dst_reg, src_reg)); in emit_mov_reg()
660 EMIT2(0x89, add_2reg(0xC0, dst_reg, src_reg)); in emit_mov_reg()
689 static void maybe_emit_mod(u8 **pprog, u32 dst_reg, u32 src_reg, bool is64) in maybe_emit_mod() argument
694 EMIT1(add_2mod(0x48, dst_reg, src_reg)); in maybe_emit_mod()
695 else if (is_ereg(dst_reg) || is_ereg(src_reg)) in maybe_emit_mod()
696 EMIT1(add_2mod(0x40, dst_reg, src_reg)); in maybe_emit_mod()
715 static void emit_ldx(u8 **pprog, u32 size, u32 dst_reg, u32 src_reg, int off) in emit_ldx() argument
722 EMIT3(add_2mod(0x48, src_reg, dst_reg), 0x0F, 0xB6); in emit_ldx()
726 EMIT3(add_2mod(0x48, src_reg, dst_reg), 0x0F, 0xB7); in emit_ldx()
730 if (is_ereg(dst_reg) || is_ereg(src_reg)) in emit_ldx()
731 EMIT2(add_2mod(0x40, src_reg, dst_reg), 0x8B); in emit_ldx()
737 EMIT2(add_2mod(0x48, src_reg, dst_reg), 0x8B); in emit_ldx()
740 emit_insn_suffix(&prog, src_reg, dst_reg, off); in emit_ldx()
745 static void emit_stx(u8 **pprog, u32 size, u32 dst_reg, u32 src_reg, int off) in emit_stx() argument
752 if (is_ereg(dst_reg) || is_ereg_8l(src_reg)) in emit_stx()
754 EMIT2(add_2mod(0x40, dst_reg, src_reg), 0x88); in emit_stx()
759 if (is_ereg(dst_reg) || is_ereg(src_reg)) in emit_stx()
760 EMIT3(0x66, add_2mod(0x40, dst_reg, src_reg), 0x89); in emit_stx()
765 if (is_ereg(dst_reg) || is_ereg(src_reg)) in emit_stx()
766 EMIT2(add_2mod(0x40, dst_reg, src_reg), 0x89); in emit_stx()
771 EMIT2(add_2mod(0x48, dst_reg, src_reg), 0x89); in emit_stx()
774 emit_insn_suffix(&prog, dst_reg, src_reg, off); in emit_stx()
779 u32 dst_reg, u32 src_reg, s16 off, u8 bpf_size) in emit_atomic() argument
785 maybe_emit_mod(&prog, dst_reg, src_reg, bpf_size == BPF_DW); in emit_atomic()
814 emit_insn_suffix(&prog, dst_reg, src_reg, off); in emit_atomic()
838 if (insn->dst_reg == BPF_REG_6 || insn->src_reg == BPF_REG_6) in detect_reg_usage()
840 if (insn->dst_reg == BPF_REG_7 || insn->src_reg == BPF_REG_7) in detect_reg_usage()
842 if (insn->dst_reg == BPF_REG_8 || insn->src_reg == BPF_REG_8) in detect_reg_usage()
844 if (insn->dst_reg == BPF_REG_9 || insn->src_reg == BPF_REG_9) in detect_reg_usage()
906 u32 src_reg = insn->src_reg; in do_jit() local
926 maybe_emit_mod(&prog, dst_reg, src_reg, in do_jit()
929 EMIT2(b2, add_2reg(0xC0, dst_reg, src_reg)); in do_jit()
936 dst_reg, src_reg); in do_jit()
1024 if (src_reg == BPF_REG_0 || in do_jit()
1025 src_reg == BPF_REG_3) { in do_jit()
1027 EMIT_mov(AUX_REG, src_reg); in do_jit()
1028 src_reg = AUX_REG; in do_jit()
1033 src_reg = AUX_REG; in do_jit()
1047 maybe_emit_1mod(&prog, src_reg, is64); in do_jit()
1048 EMIT2(0xF7, add_1reg(0xF0, src_reg)); in do_jit()
1084 maybe_emit_mod(&prog, src_reg, dst_reg, in do_jit()
1088 EMIT3(0x0F, 0xAF, add_2reg(0xC0, src_reg, dst_reg)); in do_jit()
1122 if (src_reg != BPF_REG_4) { /* common case */ in do_jit()
1126 EMIT_mov(BPF_REG_4, src_reg); in do_jit()
1136 if (src_reg != BPF_REG_4) in do_jit()
1242 emit_stx(&prog, BPF_SIZE(insn->code), dst_reg, src_reg, insn->off); in do_jit()
1275 maybe_emit_mod(&prog, src_reg, AUX_REG, true); in do_jit()
1276 EMIT2(0x39, add_2reg(0xC0, src_reg, AUX_REG)); in do_jit()
1282 emit_mov_reg(&prog, true, AUX_REG, src_reg); in do_jit()
1304 emit_ldx(&prog, BPF_SIZE(insn->code), dst_reg, src_reg, insn->off); in do_jit()
1353 u32 real_src_reg = src_reg; in do_jit()
1364 if (src_reg == BPF_REG_0) in do_jit()
1400 err = emit_atomic(&prog, insn->imm, dst_reg, src_reg, in do_jit()
1457 maybe_emit_mod(&prog, dst_reg, src_reg, in do_jit()
1459 EMIT2(0x39, add_2reg(0xC0, dst_reg, src_reg)); in do_jit()
1465 maybe_emit_mod(&prog, dst_reg, src_reg, in do_jit()
1467 EMIT2(0x85, add_2reg(0xC0, dst_reg, src_reg)); in do_jit()